hrev49977 adds 17 changesets to branch 'master'
old head: a3212ce3e9f93e800d73c9cfe88375e72d466cd9
new head: 36cbd68b3765d104759c1abdbaa4c547fcd57600
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=36cbd68b3765+%5Ea3212ce3e9f9
----------------------------------------------------------------------------
7f9368cae5ff: Set*UIColor, etc.
The inseparable changes necessary to support live color updating across the
system in a sane, safe, and performant manner.
BView gains:
HasSystemColors()
HasDefaultColors()
AdoptSystemColors()
AdoptParentColors()
AdoptViewColor(BView*)
SetViewUIColor(color_which, float tint)
SetHighUIColor(...
SetLowUIColor(...
ViewUIColor(float* tint)
HighUIColor(...
LowUIColor(...
DelayedInvalidate()
BWindow gains a simple helper method:
IsOffscreenWindow()
BMessage gains:
AddColor()
FindColor()
GetColor()
HasColor() * allegedly this API is deprecated, but I implemented
it anyway
ReplaceColor()
SetColor()
Previous private ColorTools methods are made public and moved into
GraphicsDefs:
mix_color, blend_color, disable_color
These are fully compatible with BeOS dan0 R5.1 methods and are just code
cleanup
of BeOS example code under the OpenTracker license.
In addition, four new colors are created:
B_LINK_TEXT_COLOR
B_LINK_HOVER_COLOR
B_LINK_ACTIVE_COLOR
B_LINK_VISITED_COLOR
These changes are documented in their proper user documentation files.
In addition, due to a history rewrite, B_FOLLOW_LEFT_TOP has been defined and
used in lieu of B_FOLLOW_TOP | B_FOLLOW_LEFT and is included in this commit.
On the app_server side, the following has changed:
Add DelayedMessage - a system by which messages can be sent at a scheduled
time,
and can also be merged according to set rules. A single thread is used to
service the
message queue and multiple recipients can be set for each message.
Desktop gains the ability to add message ports to a DelayedMessage so that
said messages can target either all applications or all windows, as needed.
Desktop maintains a BMessage which is used to queue up all pending color
changes
and the delayed messaging system is used to enact these changes after a short
period of time has passed. This prevents abuse and allows the system to merge
repeated set_ui_color events into one event for client applications, improving
performance drastically.
In addition, B_COLORS_UPDATED is sent to the BApplication, which forwards the
message
to each BWindow. This is done to improve performance over having the
app_server
independently informing each window.
Decorator changes are live now, which required some reworking.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
[ looncraz <looncraz@xxxxxxxxxxxx> ]
7a96554cb32d: kits/interface: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0003-0017 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
a4f254fa49a1: Remove printf() definition added in previous commit.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
3199cff3224b: kits/interface: Convert the new BCardView over as well.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
d8ca833a3503: SliderTest: dos2unix.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
d231c2a7a54f: tests: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0018-0019 from looncraz.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
1a8c00c14bf5: servers: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0020-0022 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
f0650dc98fed: preferences: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0023-0037 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
c5b4dc4007fb: Tracker: Use Set*UIColor, improved font awareness.
InfoWindow now uses the font size to determine the window size and
placement of elements. Also uses system colors, including link
colors. Permissions view not font sensitive yet.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patch 0039 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
f56d45ced485: BToolBar: Convert to using Set*UIColor.
This was a bigger change than many others as BButton now defaults to using
control background colors, and we can not do that here without the buttons
not appearing as we desire (blending in with the toolbar).
Using the control background color for the toolbar would be unacceptable.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patch 0041 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
f696e88a2cca: Convert various more things to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0038, 0040, 0042-0044 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
fa19dd447017: apps: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0045-0075, 0077-0087 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
673b9591b252: app_server: Remove include looncraz forgot to remove.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
e8a15cb354d6: Mail preferences: Delete added code to resize the window.
Breaks the build, and shouldn't be needed anyway.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
16c105178536: Deskbar: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0076 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
2567fac21d1a: app_server: Fix for LinkReciever.
LinkReceiver would spin endlessly when given a timeout value which prevented
DelayedMessageSender from being operational.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patch 0002 from looncraz, unmodified.
[ looncraz <looncraz@xxxxxxxxxxxx> ]
36cbd68b3765: Various Jamfiles: Remove added "UsePrivateHeaders interface".
Added by looncraz in previous commits, and not needed.
[ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
365 files changed, 5000 insertions(+), 1858 deletions(-)
docs/user/app/Message.dox | 140 ++-
docs/user/interface/View.dox | 189 +++-
docs/user/interface/Window.dox | 18 +-
headers/os/app/AppDefs.h | 6 +-
headers/os/app/Message.h | 16 +
headers/os/interface/Box.h | 5 +-
headers/os/interface/Button.h | 5 +-
headers/os/interface/ChannelControl.h | 5 +-
headers/os/interface/ChannelSlider.h | 8 +-
headers/os/interface/CheckBox.h | 5 +-
headers/os/interface/ControlLook.h | 18 +-
headers/os/interface/GraphicsDefs.h | 9 +-
headers/os/interface/InterfaceDefs.h | 10 +
headers/os/interface/LayoutBuilder.h | 19 +-
headers/os/interface/ListView.h | 5 +-
headers/os/interface/MenuField.h | 8 +-
headers/os/interface/MultiChannelControl.h | 5 +-
headers/os/interface/OptionControl.h | 5 +-
headers/os/interface/OptionPopUp.h | 7 +-
headers/os/interface/OutlineListView.h | 5 +-
headers/os/interface/PictureButton.h | 5 +-
headers/os/interface/RadioButton.h | 5 +-
headers/os/interface/ScrollView.h | 3 +-
headers/os/interface/Slider.h | 8 +-
headers/os/interface/SplitView.h | 3 +-
headers/os/interface/StatusBar.h | 5 +-
headers/os/interface/StringView.h | 2 +-
headers/os/interface/TextControl.h | 3 +-
headers/os/interface/View.h | 36 +-
headers/os/interface/Window.h | 2 +-
headers/private/app/ServerProtocol.h | 11 +
headers/private/app/ServerProtocolStructs.h | 4 +
headers/private/app/ServerReadOnlyMemory.h | 10 +-
headers/private/interface/AbstractSpinner.h | 2 +-
headers/private/interface/ColorTools.h | 79 --
headers/private/interface/ColumnListView.h | 7 +-
headers/private/interface/DecimalSpinner.h | 2 +-
headers/private/interface/ViewPrivate.h | 14 +-
headers/private/shared/CalendarView.h | 3 +-
.../devices/keyboard/TeamMonitorWindow.cpp | 6 +-
.../inbound_filters/match_header/ConfigView.cpp | 2 +-
.../notifier/NotifierConfigView.cpp | 2 +-
.../spam_filter/SpamFilterConfig.cpp | 2 +-
.../outbound_filters/fortune/ConfigView.cpp | 2 +-
.../print/drivers/pdf/source/DocInfoWindow.cpp | 4 +-
.../print/drivers/pdf/source/FontsWindow.cpp | 4 +-
.../transports/hp_jetdirect/SetupWindow.cpp | 2 +-
src/add-ons/print/transports/ipp/IppSetupDlg.cpp | 2 +-
src/add-ons/print/transports/lpr/LprSetupDlg.cpp | 2 +-
src/add-ons/screen_savers/glife/GLifeConfig.cpp | 2 +-
src/add-ons/screen_savers/gravity/ConfigView.cpp | 2 +-
src/add-ons/screen_savers/nebula/Nebula.cpp | 2 +-
.../slideshowsaver/SlideShowConfigView.cpp | 2 +-
src/add-ons/screen_savers/spider/SpiderSaver.cpp | 2 +-
src/add-ons/translators/bmp/BMPView.cpp | 2 +-
src/add-ons/translators/exr/ConfigView.cpp | 2 +-
src/add-ons/translators/gif/GIFView.cpp | 2 +-
src/add-ons/translators/hpgs/ConfigView.cpp | 2 +-
src/add-ons/translators/jpeg/JPEGTranslator.cpp | 2 +-
.../translators/jpeg2000/JPEG2000Translator.cpp | 2 +-
src/add-ons/translators/pcx/ConfigView.cpp | 2 +-
src/add-ons/translators/png/PNGView.cpp | 4 +-
src/add-ons/translators/ppm/PPMTranslator.cpp | 2 +-
src/add-ons/translators/raw/ConfigView.cpp | 2 +-
src/add-ons/translators/rtf/ConfigView.cpp | 2 +-
src/add-ons/translators/sgi/SGIView.cpp | 2 +-
src/add-ons/translators/stxt/STXTView.cpp | 2 +-
src/add-ons/translators/tga/TGAView.cpp | 2 +-
src/add-ons/translators/tiff/TIFFView.cpp | 4 +-
src/add-ons/translators/webp/ConfigView.cpp | 2 +-
.../translators/wonderbrush/WonderBrushView.cpp | 2 +-
src/apps/aboutsystem/AboutSystem.cpp | 74 +-
src/apps/activitymonitor/ActivityView.cpp | 9 +-
src/apps/activitymonitor/ActivityWindow.cpp | 3 +-
src/apps/activitymonitor/SettingsWindow.cpp | 1 +
src/apps/bootmanager/BootManagerWindow.cpp | 8 +-
src/apps/bootmanager/WizardPageView.cpp | 20 +-
src/apps/charactermap/CharacterView.cpp | 16 +-
.../gui/inspector_window/InspectorWindow.cpp | 6 +-
.../gui/inspector_window/MemoryView.cpp | 4 +-
.../utility_windows/ExpressionPromptWindow.cpp | 2 +-
.../gui/utility_windows/WatchPromptWindow.cpp | 2 +-
src/apps/deskbar/BarMenuBar.cpp | 2 +-
src/apps/deskbar/BarMenuTitle.cpp | 2 +-
src/apps/deskbar/BarView.cpp | 2 +-
src/apps/deskbar/ExpandoMenuBar.cpp | 2 +-
src/apps/deskbar/InlineScrollView.cpp | 2 +-
src/apps/deskbar/StatusView.cpp | 11 +-
src/apps/deskbar/Switcher.cpp | 92 +-
src/apps/deskbar/TeamMenuItem.cpp | 11 +-
src/apps/deskbar/TimeView.cpp | 10 +-
src/apps/deskbar/WindowMenuItem.cpp | 2 +-
src/apps/deskcalc/CalcView.cpp | 17 +-
src/apps/devices/PropertyListPlain.cpp | 26 +-
src/apps/devices/PropertyListPlain.h | 3 +
src/apps/devices/ResourceUsageWindow.cpp | 2 +-
src/apps/diskprobe/FindWindow.cpp | 2 +-
src/apps/diskprobe/ProbeView.cpp | 6 +-
src/apps/diskprobe/TypeEditors.cpp | 16 +-
[ *** stats truncated: 266 lines dropped *** ]
############################################################################
Commit: 7f9368cae5ff96137d32a60ed2e86795421f8222
URL: http://cgit.haiku-os.org/haiku/commit/?id=7f9368cae5ff
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:52:48 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 11:48:22 2016 UTC
Set*UIColor, etc.
The inseparable changes necessary to support live color updating across the
system in a sane, safe, and performant manner.
BView gains:
HasSystemColors()
HasDefaultColors()
AdoptSystemColors()
AdoptParentColors()
AdoptViewColor(BView*)
SetViewUIColor(color_which, float tint)
SetHighUIColor(...
SetLowUIColor(...
ViewUIColor(float* tint)
HighUIColor(...
LowUIColor(...
DelayedInvalidate()
BWindow gains a simple helper method:
IsOffscreenWindow()
BMessage gains:
AddColor()
FindColor()
GetColor()
HasColor() * allegedly this API is deprecated, but I implemented it
anyway
ReplaceColor()
SetColor()
Previous private ColorTools methods are made public and moved into GraphicsDefs:
mix_color, blend_color, disable_color
These are fully compatible with BeOS dan0 R5.1 methods and are just code cleanup
of BeOS example code under the OpenTracker license.
In addition, four new colors are created:
B_LINK_TEXT_COLOR
B_LINK_HOVER_COLOR
B_LINK_ACTIVE_COLOR
B_LINK_VISITED_COLOR
These changes are documented in their proper user documentation files.
In addition, due to a history rewrite, B_FOLLOW_LEFT_TOP has been defined and
used in lieu of B_FOLLOW_TOP | B_FOLLOW_LEFT and is included in this commit.
On the app_server side, the following has changed:
Add DelayedMessage - a system by which messages can be sent at a scheduled time,
and can also be merged according to set rules. A single thread is used to
service the
message queue and multiple recipients can be set for each message.
Desktop gains the ability to add message ports to a DelayedMessage so that
said messages can target either all applications or all windows, as needed.
Desktop maintains a BMessage which is used to queue up all pending color changes
and the delayed messaging system is used to enact these changes after a short
period of time has passed. This prevents abuse and allows the system to merge
repeated set_ui_color events into one event for client applications, improving
performance drastically.
In addition, B_COLORS_UPDATED is sent to the BApplication, which forwards the
message
to each BWindow. This is done to improve performance over having the app_server
independently informing each window.
Decorator changes are live now, which required some reworking.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
----------------------------------------------------------------------------
diff --git a/docs/user/app/Message.dox b/docs/user/app/Message.dox
index 6e1e28e..50f9e12 100644
--- a/docs/user/app/Message.dox
+++ b/docs/user/app/Message.dox
@@ -1078,6 +1078,7 @@
\since BeOS R3
*/
+
/*!
\fn status_t BMessage::AddFloat(const char* name, float aFloat)
\brief Convenience method to add a \c float to the label \a name.
@@ -1119,6 +1120,26 @@
/*!
+ \fn status_t BMessage::AddColor(const char* name, rgb_color aColor)
+ \brief Convenience method to add a \c rgb_color to the label \a name.
+
+ This method calls AddData() with the \c B_RGB_32_BIT_TYPE \a type.
+
+ \param name The label to associate the data with.
+ \param aColor The value to store in the message.
+
+ \returns A status code, \c B_OK on success or an error code.
+
+ \see AddColor() for a more detailed overview of the inner workings.
+ \see FindColor()
+ \see GetColor()
+ \see ReplaceColor()
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn status_t BMessage::AddPointer(const char* name, const void*
aPointer)
\brief Convenience method to add a \c pointer to the label \a name.
@@ -1808,6 +1829,48 @@
/*!
+ \fn status_t BMessage::FindColor(const char* name, rgb_color* value)
+ \brief Find a color with the label \a name.
+
+ This is an overloaded version of
+ FindColor(const char*, int32, rgb_color*) const
+ where the data is sought at \a index \c 0.
+
+ \param name The label to which the data is associated.
+ \param value The object in which the data should be copied.
+
+ \returns A status code, \c B_OK on success or an error code.
+ \retval B_OK The object now contains the requested data.
+ \retval B_NAME_NOT_FOUND There is no field with this \a name.
+
+ \since Haiku R1
+*/
+
+
+/*!
+ \fn status_t BMessage::FindColor(const char* name, int32 index,
+ rgb_color* value) const
+ \brief Find a color at the label \a name at an \a index.
+
+ This method looks for the data with the \c B_RGB_32_BIT_TYPE, and copies
+ it into a provided buffer.
+
+ \param name The label to which the data is associated.
+ \param index The index from which the data should be copied.
+ \param value The object in which the data should be copied.
+
+ \returns A status code, \c B_OK on success or an error code.
+ \retval B_OK The object now contains the requested data.
+ \retval B_BAD_INDEX The \a index does not exist.
+ \retval B_NAME_NOT_FOUND There is no field with this \a name.
+
+ \see FindColor(const char*, rgb_color*) const
+
+ \since BeOS R3
+*/
+
+
+/*!
\fn status_t BMessage::FindPointer(const char* name, void** pointer)
const
\brief Find a pointer at the label \a name.
@@ -1849,7 +1912,7 @@
\retval B_BAD_INDEX The \a index does not exist.
\retval B_NAME_NOT_FOUND There is no field with this \a name.
- \see FindPointer(const char*, double*) const
+ \see FindPointer(const char*, void*) const
\since BeOS R3
*/
@@ -2570,6 +2633,49 @@
/*!
+ \fn status_t BMessage::ReplaceColor(const char* name, rgb_color aColot)
+ \brief Replace a color at the label \a name.
+
+ This method is an overloaded method of
+ ReplaceColor(const char*, int32, rgb_color).
+ It replaces the data at \a index \c 0.
+
+ \param name The name associated with the data to replace.
+ \param aColor Where to store in the message.
+
+ \returns A status code, \c B_OK on success or an error code.
+ \retval B_OK The operation succeeded.
+ \retval B_NAME_NOT_FOUND There is no field with this \a name.
+
+ \since Haiku R1
+*/
+
+
+/*!
+ \fn status_t BMessage::ReplaceColor(const char* name, int32 index,
+ rgb_color aColor)
+ \brief Replace a rgb_color at the label \a name at a specified
+ \a index.
+
+ The data at the specified \a name and \a index will be replaced, if it
+ matches the \c B_RGB_32_BIT_TYPE.
+
+ \param name The name associated with the data to replace.
+ \param index The index in the array to replace.
+ \param aColor Where to store in the message.
+
+ \returns A status code, \c B_OK on success or an error code.
+ \retval B_OK The operation succeeded.
+ \retval B_BAD_INDEX The index was out of range.
+ \retval B_NAME_NOT_FOUND There is no field with this \a name.
+
+ \see ReplaceColor(const char*, rgb_color)
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn status_t BMessage::ReplacePointer(const char* name,
const void* pointer)
\brief Replace a pointer at the label \a name.
@@ -3514,6 +3620,38 @@ bool enabled = GetBool("enabled", false);
/*!
+ \fn rgb_color BMessage::GetColor(const char* name, rgb_color
defaultValue) const
+ \brief Return the rgb_color value from message with \a name, or
+ \a defaultValue if not found.
+
+ \param name The name of the item to retrieve.
+ \param defaultValue The value to use if the item specified by \a name
+ is not found.
+
+ \return The item with \a name, or \a defaultValue if not found.
+
+ \since Haiku R1
+*/
+
+
+/*!
+ \fn rgb_color BMessage::GetColor(const char* name, int32 index,
+ rgb_colorr defaultValue) const
+ \brief Return the rgb_color value from message with \a name and \a
index, or
+ \a defaultValue if not found.
+
+ \param name The name of the item to retrieve.
+ \param index The index of the item to retrieve if there is more than
one.
+ \param defaultValue The value to use if the item specified by \a name
+ is not found.
+
+ \return The item with \a name, or \a defaultValue if not found.
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn const char* BMessage::GetString(const char* name,
const char* defaultValue) const
\brief Return the string from message with \a name, or \a defaultValue
if
diff --git a/docs/user/interface/View.dox b/docs/user/interface/View.dox
index 80f7767..6ae10e7 100644
--- a/docs/user/interface/View.dox
+++ b/docs/user/interface/View.dox
@@ -1,13 +1,14 @@
/*
- * Copyright 2011-2014 Haiku, Inc. All rights reserved.
+ * Copyright 2011-2015 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* John Scipione, jscipione@xxxxxxxxx
+ * Joseph Groover, looncraz@xxxxxxxxxxxx
*
* Corresponds to:
- * headers/os/interface/View.h hrev47274
- * src/kits/interface/View.cpp hrev47274
+ * headers/os/interface/View.h hrev497**
+ * src/kits/interface/View.cpp hrev497**
*/
@@ -524,6 +525,15 @@
/*!
+ \var B_FOLLOW_LEFT_TOP
+ \brief The margins between the left and top sides of the view and the
left
+ and top sides of its parent remain constant.
+
+ \since Haiku R1
+*/
+
+
+/*!
\class BView
\ingroup interface
\ingroup libbe
@@ -596,12 +606,13 @@ if (Window()->LockLooper()) {
Each view has a ViewColor() that fills the frame rectangle before the
view does any drawing of its own. The default view color is white, you
may
- change the view color by calling SetViewColor(). A commonly used view
color
- is \c B_PANEL_BACKGROUND_COLOR which is a grey color used as the view
color
- of many Interface Kit classes. If you set the view color to
- \c B_TRANSPARENT_COLOR then the Application Server won't erase the
clipping
- region of the view before updating, this should only be used if the view
- erases itself by drawing on every pixel in the clipping region.
+ change the view color by calling SetViewColor() or, as of Haiku R1,
+ SetViewUIColor(). A commonly used view color is \c
B_PANEL_BACKGROUND_COLOR
+ which is a user-defined color used as the view color of most
applications.
+ If you set the view color to \c B_TRANSPARENT_COLOR then the
Application Server
+ won't erase the clipping region of the view before updating, this
should only
+ be used if the view erases itself by drawing on every pixel in the
clipping
+ region.
If you want to set the view color of a view to be the same as its
parent you
need to set it within the AttachedToWindow() method of the view like so:
@@ -614,6 +625,7 @@ SetViewColor(Parent()->ViewColor());
*/
+
/*!
\fn BView::BView(const char* name, uint32 flags, BLayout* layout)
\brief Layout constructor.
@@ -2058,6 +2070,59 @@ SetViewColor(Parent()->ViewColor());
/*!
+ \fn bool BView::HasDefaultColors() const
+ \brief Tests if the view has any colors set.
+
+ \return Boolean value, true if colors are not set.
+
+ \since Haiku R1
+*/
+
+
+/*!
+ \fn bool BView::HasSystemColors() const
+ \brief Tests if the view is using system "panel" colors.
+ B_PANEL_BACKGROUND_COLOR for ViewUIColor()
+ B_PANEL_BACKGROUND_COLOR for LowUIColor()
+ B_PANEL_TEXT_COLOR for HighUIColor()
+
+ \return Boolean value, true if colors are as described.
+
+ \since Haiku R1
+*/
+
+
+/*!
+ \fn void BView::AdoptParentColors()
+ \brief Attempts to use the colors of any parent view.
+ Will adopt view, low, and high colors.
+ Should be called in AttachedToWindow() or AllAttached().
+
+ \since Haiku R1
+*/
+
+
+/*!
+ \fn void BView::AdoptSystemColors()
+ \brief Instructs view to use standard system "panel" colors.
+ B_PANEL_BACKGROUND_COLOR for ViewUIColor()
+ B_PANEL_BACKGROUND_COLOR for LowUIColor()
+ B_PANEL_TEXT_COLOR for HighUIColor()
+
+ \since Haiku R1
+*/
+
+
+/*!
+ \fn void BView::AdoptViewColors(BView* view)
+ \brief Attempts to use the colors of a given view.
+ Will adopt view, low, and high colors.
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn void BView::SetHighColor(rgb_color color)
\brief Set the high color of the view.
@@ -2082,6 +2147,18 @@ SetViewColor(Parent()->ViewColor());
/*!
+ \fn void BView::SetHighUIColor(color_which which, float tint)
+ \brief Set the high color of the view to a system constant.
+ The color will update live with user changes.
+
+ \param which The color_which constant to set.
+ \param tint Optional tint value to use.
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn rgb_color BView::HighColor() const
\brief Return the current high color.
@@ -2095,6 +2172,20 @@ SetViewColor(Parent()->ViewColor());
/*!
+ \fn color_which BView::HighUIColor(float* tint) const
+ \brief Return the current high color constant being used.
+
+ \param tint Optional float pointer in which to store the tint
+ value used to modify the system color constant.
+ \return The current high color constant.
+
+ \sa SetHighUIColor(color_which, float)
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn void BView::SetLowColor(rgb_color color)
\brief Set the low color of the view.
@@ -2118,6 +2209,18 @@ SetViewColor(Parent()->ViewColor());
/*!
+ \fn void BView::SetLowUIColor(color_which which, float tint)
+ \brief Set the low color of the view to a system constant.
+ The color will update live with user changes.
+
+ \param which The color_which constant to set.
+ \param tint Optional tint value to use.
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn rgb_color BView::LowColor() const
\brief Return the current low color.
@@ -2131,6 +2234,20 @@ SetViewColor(Parent()->ViewColor());
/*!
+ \fn color_which BView::LowUIColor(float* tint) const
+ \brief Return the current low color constant being used.
+
+ \param tint Optional float pointer in which to store the tint
+ value used to modify the system color constant.
+ \return The current low color constant.
+
+ \sa SetLowUIColor(color_which, float)
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn void BView::SetViewColor(rgb_color color)
\brief Set the view color of the view.
@@ -2155,6 +2272,18 @@ SetViewColor(Parent()->ViewColor());
/*!
+ \fn void BView::SetViewUIColor(color_which which, float tint)
+ \brief Set the view color of the view to a system constant.
+ The color will update live with user changes.
+
+ \param which The color_which constant to set.
+ \param tint Optional tint value to use.
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn rgb_color BView::ViewColor() const
\brief Return the current view color.
@@ -2168,6 +2297,20 @@ SetViewColor(Parent()->ViewColor());
/*!
+ \fn color_which BView::ViewUIColor(float* tint) const
+ \brief Return the current view color constant being used.
+
+ \param tint Optional float pointer in which to store the tint
+ value used to modify the system color constant.
+ \return The current view color constant.
+
+ \sa SetViewUIColor(color_which, float)
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn void BView::ForceFontAliasing(bool enable)
\brief Turn anti-aliasing on and off when printing.
@@ -3697,6 +3840,34 @@ SetViewColor(Parent()->ViewColor());
/*!
+ \fn void BView::DelayedInvalidate(bigtime_t delay)
+ \brief Sends a message to App Server to redraw the entire view after
+ a certain, minimum, delay. Repeated calls to this method may be
+ merged, but the view is guaranteed to be redrawn after the delay
+ given in the first call of this method.
+
+ \param delay The time, in microseconds, to wait until redrawing the
view.
+
+ \since Haiku R1
+*/
+
+
+/*!
+ \fn void BView::DelayedInvalidate(bigtime_t delay, BRect invalRect)
+ \brief Sends a message to App Server to redraw the portion of the view
+ specified by \a invalRect after a certain, minimum, delay.
+ Repeated calls to this method may be merged, but the invalidated
+ rect is guaranteed to be redrawn after the minimum delay given
+ by the first call of this method.
+
+ \param delay The time, in microseconds, to wait until redrawing the
view.
+ \param invalRect The rectangular area of the view to redraw.
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn void BView::InvertRect(BRect rect)
\brief Inverts the colors within \a rect.
diff --git a/docs/user/interface/Window.dox b/docs/user/interface/Window.dox
index 7efc81b..4d7653b 100644
--- a/docs/user/interface/Window.dox
+++ b/docs/user/interface/Window.dox
@@ -1,13 +1,14 @@
/*
- * Copyright 2011-2014 Haiku, Inc. All rights reserved.
+ * Copyright 2011-2015 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* John Scipione, jscipione@xxxxxxxxx
+ * Joseph Groover, looncraz@xxxxxxxxxxxx
*
* Corresponds to:
- * headers/os/interface/Window.h hrev45799
- * src/kits/interface/Window.cpp hrev45799
+ * headers/os/interface/Window.h hrev497**
+ * src/kits/interface/Window.cpp hrev497**
*/
@@ -1968,6 +1969,17 @@
/*!
+ \fn bool BWindow::IsOffscreenWindow() const
+ \brief Tests if window is used for drawing into a BBitmap.
+ This is mostly used by the Interface Kit itself.
+
+ \return True if the window is used for drawing into a BBitmap.
+
+ \since Haiku R1
+*/
+
+
+/*!
\fn void BWindow::Show()
\brief Shows the window on screen, places it frontmost on the screen,
adds
the window to Deskbar's window list, and makes it the active
window.
diff --git a/headers/os/app/AppDefs.h b/headers/os/app/AppDefs.h
index 0a70d8b..d48c585 100644
--- a/headers/os/app/AppDefs.h
+++ b/headers/os/app/AppDefs.h
@@ -67,10 +67,8 @@ enum {
B_WORKSPACES_CHANGED = '_WCG',
B_WORKSPACE_ACTIVATED = '_WAC',
B_ZOOM = '_WZM',
- _COLORS_UPDATED = '_CLU',
- // Currently internal-use only. Later, public as
B_COLORS_UPDATED
- _FONTS_UPDATED = '_FNU',
- // Currently internal-use only. Later, public as B_FONTS_UPDATED
+ B_COLORS_UPDATED = '_CLU',
+ B_FONTS_UPDATED = '_FNU',
_APP_MENU_ = '_AMN',
_BROWSER_MENUS_ = '_BRM',
_MENU_EVENT_ = '_MEV',
diff --git a/headers/os/app/Message.h b/headers/os/app/Message.h
index 7d7eab4..077da89 100644
--- a/headers/os/app/Message.h
+++ b/headers/os/app/Message.h
@@ -29,6 +29,7 @@ class BHandler;
class BString;
class BStringList;
struct entry_ref;
+struct rgb_color;
// Name lengths and Scripting specifiers
@@ -154,6 +155,7 @@ public:
status_t AddBool(const char*
name, bool value);
status_t AddFloat(const char*
name, float value);
status_t AddDouble(const char*
name, double value);
+ status_t AddColor(const char*
name, rgb_color value);
status_t AddPointer(const char*
name,
const
void* pointer);
status_t AddMessenger(const
char* name,
@@ -241,6 +243,10 @@ public:
double*
value) const;
status_t FindDouble(const char*
name, int32 index,
double*
value) const;
+ status_t FindColor(const char*
name,
+
rgb_color* value) const;
+ status_t FindColor(const char*
name, int32 index,
+
rgb_color* value) const;
status_t FindPointer(const char*
name,
void**
pointer) const;
status_t FindPointer(const char*
name, int32 index,
@@ -324,6 +330,10 @@ public:
status_t ReplaceDouble(const
char* name, double value);
status_t ReplaceDouble(const
char* name, int32 index,
double
value);
+ status_t ReplaceColor(const
char* name,
+
rgb_color value);
+ status_t ReplaceColor(const
char* name, int32 index,
+
rgb_color value);
status_t ReplacePointer(const
char* name,
const
void* pointer);
status_t ReplacePointer(const
char* name, int32 index,
@@ -379,6 +389,7 @@ public:
bool HasBool(const char*
name, int32 n = 0) const;
bool HasFloat(const char*
name, int32 n = 0) const;
bool HasDouble(const char*
name, int32 n = 0) const;
+ bool HasColor(const char*
name, int32 n = 0) const;
bool HasPointer(const char*
name, int32 n = 0) const;
bool HasMessenger(const
char* name,
int32 n
= 0) const;
@@ -446,6 +457,10 @@ public:
double
defaultValue) const;
double GetDouble(const char*
name, int32 index,
double
defaultValue) const;
+ rgb_color GetColor(const char*
name,
+
rgb_color defaultValue) const;
+ rgb_color GetColor(const char*
name, int32 index,
+
rgb_color defaultValue) const;
const char* GetString(const char*
name,
const
char* defaultValue = NULL) const;
const char* GetString(const char*
name, int32 index,
@@ -477,6 +492,7 @@ public:
status_t SetUInt32(const char*
name, uint32 value);
status_t SetInt64(const char*
name, int64 value);
status_t SetUInt64(const char*
name, uint64 value);
+ status_t SetColor(const char*
name, rgb_color value);
status_t SetPointer(const char*
name, const void* value);
status_t SetString(const char*
name, const char* string);
status_t SetString(const char*
name,
diff --git a/headers/os/interface/Box.h b/headers/os/interface/Box.h
index 37bdf88..a3020d3 100644
--- a/headers/os/interface/Box.h
+++ b/headers/os/interface/Box.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2005-2013 Haiku, Inc. All Rights Reserved.
+ * Copyright 2005-2015 Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _BOX_H
@@ -12,8 +12,7 @@
class BBox : public BView {
public:
BBox(BRect frame, const
char* name = NULL,
- uint32
resizingMode = B_FOLLOW_LEFT
- |
B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32 flags =
B_WILL_DRAW | B_FRAME_EVENTS
|
B_NAVIGABLE_JUMP,
border_style
border = B_FANCY_BORDER);
diff --git a/headers/os/interface/Button.h b/headers/os/interface/Button.h
index 703bb09..71dfac5 100644
--- a/headers/os/interface/Button.h
+++ b/headers/os/interface/Button.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2014 Haiku, Inc. All rights reserved.
+ * Copyright 2001-2015 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _BUTTON_H
@@ -20,8 +20,7 @@ public:
public:
BButton(BRect
frame, const char* name,
const
char* label, BMessage* message,
- uint32
resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_NAVIGABLE
| B_FULL_UPDATE_ON_RESIZE);
BButton(const
char* name, const char* label,
diff --git a/headers/os/interface/ChannelControl.h
b/headers/os/interface/ChannelControl.h
index 3f9e5c8..7df9cd9 100644
--- a/headers/os/interface/ChannelControl.h
+++ b/headers/os/interface/ChannelControl.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2008-2009, Haiku, Inc. All rights reserved.
+ * Copyright 2008-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _CHANNEL_CONTROL_H
@@ -18,8 +18,7 @@ public:
BChannelControl(BRect frame, const char* name,
const
char* label, BMessage* model,
int32
channelCount = 1,
- uint32
resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW);
BChannelControl(const char* name,
const
char* label, BMessage* model,
diff --git a/headers/os/interface/ChannelSlider.h
b/headers/os/interface/ChannelSlider.h
index 8c3961b..5151ef1 100644
--- a/headers/os/interface/ChannelSlider.h
+++ b/headers/os/interface/ChannelSlider.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2009, Haiku, Inc. All rights reserved.
+ * Copyright 2009-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _CHANNEL_SLIDER_H
@@ -14,15 +14,13 @@ public:
BChannelSlider(BRect area, const char* name,
const
char* label, BMessage* message,
int32
channels = 1,
- uint32
resizeMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizeMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW);
BChannelSlider(BRect area, const char* name,
const
char* label, BMessage* message,
orientation orientation,
int32
channels = 1,
- uint32
resizeMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizeMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW);
BChannelSlider(const char* name,
const
char* label, BMessage* message,
diff --git a/headers/os/interface/CheckBox.h b/headers/os/interface/CheckBox.h
index 674a701..056f034 100644
--- a/headers/os/interface/CheckBox.h
+++ b/headers/os/interface/CheckBox.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2014 Haiku, Inc. All rights reserved.
+ * Copyright 2001-2015 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _CHECK_BOX_H
@@ -13,8 +13,7 @@ class BCheckBox : public BControl {
public:
BCheckBox(BRect
frame, const char* name,
const
char* label, BMessage* message,
- uint32
resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_NAVIGABLE);
BCheckBox(const
char* name, const char* label,
BMessage* message, uint32 flags
diff --git a/headers/os/interface/ControlLook.h
b/headers/os/interface/ControlLook.h
index 6de91e2..445f40b 100644
--- a/headers/os/interface/ControlLook.h
+++ b/headers/os/interface/ControlLook.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2009-2012, Haiku, Inc. All rights reserved.
+ * Copyright 2009-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _CONTROL_LOOK_H
@@ -85,6 +85,7 @@ public:
B_PARTIALLY_ACTIVATED = 1 << 7, // like B_ACTIVATED, but for
tri-state
B_FLAT = 1 << 8, // flat look
(e.g. button background)
B_INVALID = 1 << 9, // invalid
value, use B_FAILURE_COLOR
+ B_IS_CONTROL = 1 << 10, // use control colors
B_BLEND_FRAME = 1 << 16,
};
@@ -328,27 +329,32 @@ public:
/*virtual*/ void DrawLabel(BView* view, const
char* label,
BRect
rect, const BRect& updateRect,
- const
rgb_color& base, uint32 flags);
+ const
rgb_color& base, uint32 flags,
+ const
rgb_color* textColor = NULL);
virtual void DrawLabel(BView* view, const
char* label,
BRect
rect, const BRect& updateRect,
const
rgb_color& base, uint32 flags,
- const
BAlignment& alignment);
+ const
BAlignment& alignment,
+ const
rgb_color* textColor = NULL);
// TODO: Would be nice to have a (non-virtual) version of this method
// which takes an array of labels and locations. That would save some
// setup with the view graphics state.
/*virtual*/ void DrawLabel(BView* view, const
char* label,
const
rgb_color& base, uint32 flags,
- const
BPoint& where);
+ const
BPoint& where,
+ const
rgb_color* textColor = NULL);
void DrawLabel(BView* view,
const char* label,
const
BBitmap* icon, BRect rect,
const
BRect& updateRect,
- const
rgb_color& base, uint32 flags);
+ const
rgb_color& base, uint32 flags,
+ const
rgb_color* textColor = NULL);
virtual void DrawLabel(BView* view, const
char* label,
const
BBitmap* icon, BRect rect,
const
BRect& updateRect,
const
rgb_color& base, uint32 flags,
- const
BAlignment& alignment);
+ const
BAlignment& alignment,
+ const
rgb_color* textColor = NULL);
virtual void GetFrameInsets(frame_type
frameType,
uint32
flags, float& _left, float& _top,
diff --git a/headers/os/interface/GraphicsDefs.h
b/headers/os/interface/GraphicsDefs.h
index 5e970c0..e98d6de 100644
--- a/headers/os/interface/GraphicsDefs.h
+++ b/headers/os/interface/GraphicsDefs.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2008-2012 Haiku, Inc. All rights reserved.
+ * Copyright 2008-2015 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _GRAPHICS_DEFS_H
@@ -57,6 +57,8 @@ typedef struct rgb_color {
return *this;
}
+ int32 Brightness() const;
+
inline bool
operator==(const rgb_color& other) const
{
@@ -88,6 +90,11 @@ make_color(uint8 red, uint8 green, uint8 blue, uint8 alpha =
255)
#endif
+rgb_color mix_color(rgb_color color1, rgb_color color2, uint8 amount);
+rgb_color blend_color(rgb_color color1, rgb_color color2, uint8 amount);
+rgb_color disable_color(rgb_color color, rgb_color background);
+
+
extern const rgb_color B_TRANSPARENT_COLOR;
extern const uint8 B_TRANSPARENT_MAGIC_CMAP8;
extern const uint16 B_TRANSPARENT_MAGIC_RGBA15;
diff --git a/headers/os/interface/InterfaceDefs.h
b/headers/os/interface/InterfaceDefs.h
index edfe7fd..ed550fb 100644
--- a/headers/os/interface/InterfaceDefs.h
+++ b/headers/os/interface/InterfaceDefs.h
@@ -11,6 +11,7 @@
class BBitmap;
+class BMessage;
class BPoint;
class BRect;
@@ -296,6 +297,7 @@ enum bitmap_drawing_options {
// Default UI Colors
enum color_which {
+ B_NO_COLOR = 0,
B_PANEL_BACKGROUND_COLOR = 1,
B_PANEL_TEXT_COLOR = 10,
B_DOCUMENT_BACKGROUND_COLOR = 11,
@@ -310,6 +312,11 @@ enum color_which {
B_SHINE_COLOR = 18,
B_SHADOW_COLOR = 19,
+ B_LINK_TEXT_COLOR = 33,
+ B_LINK_HOVER_COLOR = 34,
+ B_LINK_VISITED_COLOR = 35,
+ B_LINK_ACTIVE_COLOR = 36,
+
B_MENU_BACKGROUND_COLOR = 2,
B_MENU_SELECTED_BACKGROUND_COLOR = 6,
B_MENU_ITEM_TEXT_COLOR = 7,
@@ -463,7 +470,10 @@ void set_accept_first_click(bool
acceptFirstClick);
bool accept_first_click();
rgb_color ui_color(color_which which);
+const char* ui_color_name(color_which which);
+color_which which_ui_color(const char* name);
void set_ui_color(const color_which& which, const rgb_color&
color);
+void set_ui_colors(const BMessage* colors);
rgb_color tint_color(rgb_color color, float tint);
extern "C" status_t _init_interface_kit_();
diff --git a/headers/os/interface/LayoutBuilder.h
b/headers/os/interface/LayoutBuilder.h
index 1c54716..4ba372c 100644
--- a/headers/os/interface/LayoutBuilder.h
+++ b/headers/os/interface/LayoutBuilder.h
@@ -457,9 +457,7 @@ Group<ParentBuilder>::Group(BWindow* window, orientation
orientation,
fLayout(new BGroupLayout(orientation, spacing))
{
window->SetLayout(fLayout);
-
- fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
- // TODO: we get a white background if we don't do this
+ fLayout->Owner()->AdoptSystemColors();
}
@@ -469,9 +467,11 @@ Group<ParentBuilder>::Group(BView* view, orientation
orientation,
:
fLayout(new BGroupLayout(orientation, spacing))
{
+
+ if (view->HasDefaultColors())
+ view->AdoptSystemColors();
+
view->SetLayout(fLayout);
- view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
- // TODO: we get a white background if we don't do this
}
@@ -796,9 +796,7 @@ Grid<ParentBuilder>::Grid(BWindow* window, float
horizontalSpacing,
fLayout(new BGridLayout(horizontalSpacing, verticalSpacing))
{
window->SetLayout(fLayout);
-
- fLayout->Owner()->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
- // TODO: we get a white background if we don't do this
+ fLayout->Owner()->AdoptSystemColors();
}
@@ -808,9 +806,10 @@ Grid<ParentBuilder>::Grid(BView* view, float
horizontalSpacing,
:
fLayout(new BGridLayout(horizontalSpacing, verticalSpacing))
{
+ if (view->HasDefaultColors())
+ view->AdoptSystemColors();
+
view->SetLayout(fLayout);
- view->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
- // TODO: we get a white background if we don't do this
}
diff --git a/headers/os/interface/ListView.h b/headers/os/interface/ListView.h
index 311fa77..fe8a9af 100644
--- a/headers/os/interface/ListView.h
+++ b/headers/os/interface/ListView.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2013 Haiku, Inc. All rights reserved.
+ * Copyright 2002-2015 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _LIST_VIEW_H
@@ -26,8 +26,7 @@ public:
BListView(BRect
frame, const char* name,
list_view_type type
= B_SINGLE_SELECTION_LIST,
- uint32
resizeMask = B_FOLLOW_LEFT
-
| B_FOLLOW_TOP,
+ uint32
resizeMask = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW
| B_FRAME_EVENTS | B_NAVIGABLE);
BListView(const
char* name,
diff --git a/headers/os/interface/MenuField.h b/headers/os/interface/MenuField.h
index bbc95ab..d605419 100644
--- a/headers/os/interface/MenuField.h
+++ b/headers/os/interface/MenuField.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2013, Haiku, Inc. All rights reserved.
+ * Copyright 2006-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _MENU_FIELD_H
@@ -17,14 +17,12 @@ class BMenuField : public BView {
public:
BMenuField(BRect frame, const char* name,
const
char* label, BMenu* menu,
- uint32
resizingMode = B_FOLLOW_LEFT
-
| B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_NAVIGABLE);
BMenuField(BRect frame, const char* name,
const
char* label, BMenu* menu,
bool
fixed_size,
- uint32
resizingMode = B_FOLLOW_LEFT
-
| B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_NAVIGABLE);
BMenuField(const char* name,
const
char* label, BMenu* menu,
diff --git a/headers/os/interface/MultiChannelControl.h
b/headers/os/interface/MultiChannelControl.h
index 49733d6..4f4aff0 100644
--- a/headers/os/interface/MultiChannelControl.h
+++ b/headers/os/interface/MultiChannelControl.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2009, Haiku, Inc. All rights reserved.
+ * Copyright 2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _MULTI_CHANNEL_CONTROL_H
@@ -14,8 +14,7 @@ public:
BMultiChannelControl(BRect frame,
const
char* name, const char* label,
BMessage* message, int32 channelCount = 1,
- uint32
resize = B_FOLLOW_LEFT
-
| B_FOLLOW_TOP,
+ uint32
resize = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW);
BMultiChannelControl(BMessage* archive);
virtual ~BMultiChannelControl();
diff --git a/headers/os/interface/OptionControl.h
b/headers/os/interface/OptionControl.h
index d038f5f..d5f28f3 100644
--- a/headers/os/interface/OptionControl.h
+++ b/headers/os/interface/OptionControl.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2009, Haiku, Inc. All rights reserved.
+ * Copyright 2001-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _OPTION_CONTROL_H
@@ -18,8 +18,7 @@ class BOptionControl : public BControl {
public:
BOptionControl(BRect frame, const char* name,
const
char* label, BMessage* message,
- uint32
resizeMask = B_FOLLOW_LEFT
-
| B_FOLLOW_TOP,
+ uint32
resizeMask = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW);
BOptionControl(const char* name,
const
char* label, BMessage* message,
diff --git a/headers/os/interface/OptionPopUp.h
b/headers/os/interface/OptionPopUp.h
index 12110a7..2c6cc3d 100644
--- a/headers/os/interface/OptionPopUp.h
+++ b/headers/os/interface/OptionPopUp.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2009, Haiku, Inc. All rights reserved.
+ * Copyright 2001-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _OPTION_POP_UP_H
@@ -16,13 +16,12 @@ class BOptionPopUp : public BOptionControl {
public:
BOptionPopUp(BRect frame, const char* name,
const
char* label, BMessage* message,
- uint32
resizeMask = B_FOLLOW_LEFT
-
| B_FOLLOW_TOP,
+ uint32
resizeMask = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW);
BOptionPopUp(BRect frame, const char* name,
const
char* label, BMessage* message,
bool
fixed, uint32 resizeMask
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+
= B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW);
BOptionPopUp(const char* name,
const
char* label, BMessage* message,
diff --git a/headers/os/interface/OutlineListView.h
b/headers/os/interface/OutlineListView.h
index 2dc58ce..2d519da 100644
--- a/headers/os/interface/OutlineListView.h
+++ b/headers/os/interface/OutlineListView.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2013, Haiku, Inc. All rights reserved.
+ * Copyright 2006-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _OUTLINE_LIST_VIEW_H
@@ -14,8 +14,7 @@ public:
BOutlineListView(BRect frame, const char* name,
list_view_type type
= B_SINGLE_SELECTION_LIST,
- uint32
resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW
| B_FRAME_EVENTS | B_NAVIGABLE);
BOutlineListView(const char* name,
diff --git a/headers/os/interface/PictureButton.h
b/headers/os/interface/PictureButton.h
index 904ff46..0a21ea9 100644
--- a/headers/os/interface/PictureButton.h
+++ b/headers/os/interface/PictureButton.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2008, Haiku, Inc. All rights reserved.
+ * Copyright 2001-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _PICTURE_BUTTON_H
@@ -22,8 +22,7 @@ public:
BPicture* off, BPicture* on,
BMessage* message,
uint32
behavior = B_ONE_STATE_BUTTON,
- uint32
resizingMode = B_FOLLOW_LEFT
-
| B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flgs = B_WILL_DRAW | B_NAVIGABLE);
BPictureButton(BMessage* archive);
diff --git a/headers/os/interface/RadioButton.h
b/headers/os/interface/RadioButton.h
index 6a218db..a1cd200 100644
--- a/headers/os/interface/RadioButton.h
+++ b/headers/os/interface/RadioButton.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2008, Haiku, Inc. All rights reserved.
+ * Copyright 2001-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _RADIO_BUTTON_H
@@ -14,8 +14,7 @@ class BRadioButton : public BControl {
public:
BRadioButton(BRect frame, const char* name,
const
char* label, BMessage* message,
- uint32
resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_NAVIGABLE);
BRadioButton(const char* name,
const
char* label, BMessage* message,
diff --git a/headers/os/interface/ScrollView.h
b/headers/os/interface/ScrollView.h
index 7abec2d..d90c7587 100644
--- a/headers/os/interface/ScrollView.h
+++ b/headers/os/interface/ScrollView.h
@@ -15,8 +15,7 @@
class BScrollView : public BView {
public:
BScrollView(const char* name, BView* target,
- uint32
resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = 0, bool horizontal = false,
bool
vertical = false,
border_style border = B_FANCY_BORDER);
diff --git a/headers/os/interface/Slider.h b/headers/os/interface/Slider.h
index 42e8148..888bb8f 100644
--- a/headers/os/interface/Slider.h
+++ b/headers/os/interface/Slider.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2013, Haiku, Inc. All rights reserved.
+ * Copyright 2001-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _SLIDER_H
@@ -30,8 +30,7 @@ public:
const
char* label, BMessage* message,
int32
minValue, int32 maxValue,
thumb_style thumbType = B_BLOCK_THUMB,
- uint32
resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_NAVIGABLE | B_WILL_DRAW
| B_FRAME_EVENTS);
@@ -40,8 +39,7 @@ public:
int32
minValue, int32 maxValue,
orientation posture,
thumb_style thumbType = B_BLOCK_THUMB,
- uint32
resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_NAVIGABLE | B_WILL_DRAW
| B_FRAME_EVENTS);
diff --git a/headers/os/interface/SplitView.h b/headers/os/interface/SplitView.h
index c4d3dd5..efa8a47 100644
--- a/headers/os/interface/SplitView.h
+++ b/headers/os/interface/SplitView.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2010, Haiku, Inc. All rights reserved.
+ * Copyright 2006-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _SPLIT_VIEW_H
@@ -61,6 +61,7 @@ public:
bool AddChild(int32 index,
BLayoutItem* child,
float
weight);
+ virtual void AttachedToWindow();
virtual void Draw(BRect updateRect);
virtual void DrawAfterChildren(BRect
updateRect);
virtual void MouseDown(BPoint where);
diff --git a/headers/os/interface/StatusBar.h b/headers/os/interface/StatusBar.h
index 789f3a9..9f17da6 100644
--- a/headers/os/interface/StatusBar.h
+++ b/headers/os/interface/StatusBar.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2009, Haiku, Inc. All rights reserved.
+ * Copyright 2006-2015, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _STATUS_BAR_H
@@ -110,8 +110,9 @@ private:
float fTextDivider;
rgb_color fBarColor;
bool fCustomBarHeight;
+ uint32 fInternalFlags;
- uint32 _reserved[5];
+ uint32 _reserved[4];
};
#endif // _STATUS_BAR_H
diff --git a/headers/os/interface/StringView.h
b/headers/os/interface/StringView.h
index 820b41a..d75dfc2 100644
--- a/headers/os/interface/StringView.h
+++ b/headers/os/interface/StringView.h
@@ -13,7 +13,7 @@ class BStringView : public BView {
public:
BStringView(BRect frame, const char* name,
const
char* text, uint32 resizingMode
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+
= B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW);
BStringView(const char* name, const char* text,
uint32
flags = B_WILL_DRAW);
diff --git a/headers/os/interface/TextControl.h
b/headers/os/interface/TextControl.h
index 49fd7b5..3c8792b 100644
--- a/headers/os/interface/TextControl.h
+++ b/headers/os/interface/TextControl.h
@@ -21,8 +21,7 @@ public:
BTextControl(BRect frame, const char* name,
const
char* label, const char* initialText,
BMessage* message,
- uint32
resizeMask
-
= B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizeMask = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_NAVIGABLE);
BTextControl(const char* name,
const
char* label, const char* initialText,
diff --git a/headers/os/interface/View.h b/headers/os/interface/View.h
index 84079e1..ddec3df 100644
--- a/headers/os/interface/View.h
+++ b/headers/os/interface/View.h
@@ -107,6 +107,7 @@ inline uint32 _rule_(uint32 r1, uint32 r2, uint32 r3,
uint32 r4)
#define B_FOLLOW_TOP_BOTTOM _rule_(_VIEW_TOP_, 0, _VIEW_BOTTOM_, 0)
#define B_FOLLOW_V_CENTER _rule_(_VIEW_CENTER_, 0, _VIEW_CENTER_, 0)
+#define B_FOLLOW_LEFT_TOP B_FOLLOW_TOP | B_FOLLOW_LEFT
class BBitmap;
class BCursor;
@@ -242,32 +243,38 @@ public:
void SetViewCursor(const
BCursor* cursor,
bool
sync = true);
+ bool HasDefaultColors()
const;
+ bool HasSystemColors() const;
+ void AdoptParentColors();
+ void AdoptSystemColors();
+ void AdoptViewColors(BView*
view);
+
virtual void SetViewColor(rgb_color color);
void SetViewColor(uchar red,
uchar green, uchar blue,
uchar
alpha = 255);
rgb_color ViewColor() const;
+ void
SetViewUIColor(color_which which,
+ float
tint = B_NO_TINT);
+ color_which ViewUIColor(float* tint
= NULL) const;
+
void SetViewBitmap(const
BBitmap* bitmap,
BRect
srcRect, BRect dstRect,
- uint32
followFlags
-
= B_FOLLOW_TOP | B_FOLLOW_LEFT,
+ uint32
followFlags = B_FOLLOW_LEFT_TOP,
uint32
options = B_TILE_BITMAP);
void SetViewBitmap(const
BBitmap* bitmap,
- uint32
followFlags
-
= B_FOLLOW_TOP | B_FOLLOW_LEFT,
+ uint32
followFlags = B_FOLLOW_LEFT_TOP,
uint32
options = B_TILE_BITMAP);
void ClearViewBitmap();
status_t SetViewOverlay(const
BBitmap* overlay,
BRect
srcRect, BRect dstRect,
rgb_color* colorKey,
- uint32
followFlags
-
= B_FOLLOW_TOP | B_FOLLOW_LEFT,
+ uint32
followFlags = B_FOLLOW_LEFT_TOP,
uint32
options = 0);
status_t SetViewOverlay(const
BBitmap* overlay,
rgb_color* colorKey,
- uint32
followFlags
-
= B_FOLLOW_TOP | B_FOLLOW_LEFT,
+ uint32
followFlags = B_FOLLOW_LEFT_TOP,
uint32
options = 0);
void ClearViewOverlay();
@@ -276,11 +283,19 @@ public:
uchar
alpha = 255);
rgb_color HighColor() const;
+ void
SetHighUIColor(color_which which,
+ float
tint = B_NO_TINT);
+ color_which HighUIColor(float* tint
= NULL) const;
+
virtual void SetLowColor(rgb_color color);
void SetLowColor(uchar red,
uchar green, uchar blue,
uchar
alpha = 255);
rgb_color LowColor() const;
+ void
SetLowUIColor(color_which which,
+ float
tint = B_NO_TINT);
+ color_which LowUIColor(float* tint
= NULL) const;
+
void SetLineMode(cap_mode
lineCap,
join_mode lineJoin,
float
miterLimit = B_DEFAULT_MITER_LIMIT);
@@ -495,6 +510,9 @@ public:
void Invalidate(BRect
invalRect);
void Invalidate(const
BRegion* invalRegion);
void Invalidate();
+ void
DelayedInvalidate(bigtime_t delay);
+ void
DelayedInvalidate(bigtime_t delay,
+ BRect
invalRect);
void SetDiskMode(char*
filename, long offset);
@@ -691,9 +709,11 @@ private:
void _Activate(bool state);
void _Attach();
+ void
_ColorsUpdated(BMessage* message);
void _Detach();
void _Draw(BRect
screenUpdateRect);
void
_DrawAfterChildren(BRect screenUpdateRect);
+ void
_FontsUpdated(BMessage*);
void _Pulse();
void _UpdateStateForRemove();
diff --git a/headers/os/interface/Window.h b/headers/os/interface/Window.h
index 586bfb7..c59a549 100644
--- a/headers/os/interface/Window.h
+++ b/headers/os/interface/Window.h
@@ -272,7 +272,7 @@ public:
void InvalidateLayout(bool
descendants = false);
void Layout(bool force);
-
+ bool IsOffscreenWindow()
const;
private:
// FBC padding and forbidden methods
virtual void _ReservedWindow2();
diff --git a/headers/private/app/ServerProtocol.h
b/headers/private/app/ServerProtocol.h
index d5f42f0..73b0a7c 100644
--- a/headers/private/app/ServerProtocol.h
+++ b/headers/private/app/ServerProtocol.h
@@ -293,11 +293,18 @@ enum {
AS_VIEW_SET_PEN_SIZE,
AS_VIEW_GET_PEN_SIZE,
AS_VIEW_SET_HIGH_COLOR,
+ AS_VIEW_SET_HIGH_UI_COLOR,
AS_VIEW_SET_LOW_COLOR,
+ AS_VIEW_SET_LOW_UI_COLOR,
AS_VIEW_SET_VIEW_COLOR,
+ AS_VIEW_SET_VIEW_UI_COLOR,
AS_VIEW_GET_HIGH_COLOR,
+ AS_VIEW_GET_HIGH_UI_COLOR,
AS_VIEW_GET_LOW_COLOR,
+ AS_VIEW_GET_LOW_UI_COLOR,
AS_VIEW_GET_VIEW_COLOR,
+ AS_VIEW_GET_VIEW_UI_COLOR,
+
AS_VIEW_PRINT_ALIASING,
AS_VIEW_CLIP_TO_PICTURE,
AS_VIEW_GET_CLIP_REGION,
@@ -314,6 +321,7 @@ enum {
AS_VIEW_COPY_BITS,
AS_VIEW_DRAW_PICTURE,
AS_VIEW_INVALIDATE_RECT,
+ AS_VIEW_DELAYED_INVALIDATE_RECT,
AS_VIEW_INVALIDATE_REGION,
AS_VIEW_INVERT_RECT,
AS_VIEW_MOVE_TO,
@@ -355,6 +363,9 @@ enum {
AS_VIEW_CLIP_TO_RECT,
AS_VIEW_CLIP_TO_SHAPE,
+ // Internal messages
+ AS_COLOR_MAP_UPDATED,
+
AS_LAST_CODE
};
diff --git a/headers/private/app/ServerProtocolStructs.h
b/headers/private/app/ServerProtocolStructs.h
index 8eec0aa..ff98636 100644
--- a/headers/private/app/ServerProtocolStructs.h
+++ b/headers/private/app/ServerProtocolStructs.h
@@ -18,6 +18,10 @@ struct ViewSetStateInfo {
float penSize;
rgb_color highColor;
rgb_color lowColor;
+ color_which whichHighColor;
+ color_which whichLowColor;
+ float whichHighColorTint;
+ float whichLowColorTint;
::pattern pattern;
drawing_mode drawingMode;
BPoint origin;
diff --git a/headers/private/app/ServerReadOnlyMemory.h
b/headers/private/app/ServerReadOnlyMemory.h
index 2384981..f62e3c0 100644
--- a/headers/private/app/ServerReadOnlyMemory.h
+++ b/headers/private/app/ServerReadOnlyMemory.h
@@ -13,11 +13,11 @@
#include <InterfaceDefs.h>
-// Update this constant with the largest color constant excluding
-// B_SUCCESS_COLOR and B_FAILURE_COLOR.
-// If you add a constant with index greater than 100 you'll have to add
-// to the second operand.
-static const int32 kColorWhichCount = B_SCROLL_BAR_THUMB_COLOR + 3;
+// Update kColorWhichLastContinuous with the largest color constant which
+// leaves no gaps in the color_which integer values.
+static const int32 kColorWhichLastContinuous = B_LINK_ACTIVE_COLOR;
+static const int32 kColorWhichCount = kColorWhichLastContinuous + 3;
+ // + 1 for index-offset, + 2 for B_SUCCESS_COLOR, B_FAILURE_COLOR
struct server_read_only_memory {
diff --git a/headers/private/interface/AbstractSpinner.h
b/headers/private/interface/AbstractSpinner.h
index 9d961b1..e822299 100644
--- a/headers/private/interface/AbstractSpinner.h
+++ b/headers/private/interface/AbstractSpinner.h
@@ -39,7 +39,7 @@ class BAbstractSpinner : public BControl {
public:
BAbstractSpinner(BRect frame, const char* name,
const
char* label, BMessage* message,
- uint32
resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_NAVIGABLE);
BAbstractSpinner(const char* name, const char* label,
BMessage* message,
diff --git a/headers/private/interface/ColorTools.h
b/headers/private/interface/ColorTools.h
deleted file mode 100644
index 8f7e78e..0000000
--- a/headers/private/interface/ColorTools.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-Open Tracker License
-
-Terms and Conditions
-
-Copyright (c) 1991-2000, Be Incorporated. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice applies to all licensees
-and shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN
CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of Be Incorporated shall not be
-used in advertising or otherwise to promote the sale, use or other dealings in
-this Software without prior written authorization from Be Incorporated.
-
-Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered
trademarks
-of Be Incorporated in the United States and other countries. Other brand
product
-names are registered trademarks or trademarks of their respective holders.
-All rights reserved.
-*/
-
-/*******************************************************************************
-/
-/ File: ColorTools.h
-/
-/ Description: Additional experimental color manipulation functions.
-/
-/ Copyright 2000, Be Incorporated, All Rights Reserved
-/
-*******************************************************************************/
-
-
-#ifndef _COLOR_TOOLS_H
-#define _COLOR_TOOLS_H
-
-#include <GraphicsDefs.h>
-
-#if B_BEOS_VERSION <= B_BEOS_VERSION_5
-
-namespace BExperimental {
-
-// Mix two colors together, ignoring their relative alpha channels.
-// If amount is 0, the result is color1; if 255, the result is color2;
-// if another value, it is somewhere in-between. The resulting alpha
-// channel is mixed exactly like the other color channels.
-rgb_color mix_color(rgb_color color1, rgb_color color2, uint8 amount);
-
-// Blend two colors together, weighting by their relative alpha channels.
-// The resulting color is the same as mix_color(), except that the amount
-// used from color1 and color2's color channels is dependent on that color's
-// alpha channel. For example, if color1.alpha is 0 and color2.alpha is
-// 255, the resulting red, green, and blue values will be the same as those
-// in color2, regardless of 'amount'.
-rgb_color blend_color(rgb_color color1, rgb_color color2, uint8 amount);
-
-// Return a color that is the disabled representation of 'color' when drawn
-// on a solid color 'background'.
-rgb_color disable_color(rgb_color color, rgb_color background);
-
-} // namespace BExperimental
-
-using namespace BExperimental;
-
-#endif
-
-#endif
diff --git a/headers/private/interface/ColumnListView.h
b/headers/private/interface/ColumnListView.h
index 76fd0bc..5cfdf13 100644
--- a/headers/private/interface/ColumnListView.h
+++ b/headers/private/interface/ColumnListView.h
@@ -63,10 +63,10 @@ class RecursiveOutlineIterator;
} // ns BPrivate
-class BField;
-class BRow;
class BColumn;
class BColumnListView;
+class BField;
+class BRow;
enum LatchType {
B_NO_LATCH = 0,
@@ -353,6 +353,7 @@ public:
// Appearance (NEW STYLE)
void
SetColor(ColumnListViewColor colorIndex,
rgb_color color);
+ void ResetColors();
void
SetFont(ColumnListViewFont fontIndex,
const
BFont* font,
uint32
mask = B_FONT_ALL);
@@ -396,12 +397,14 @@ protected:
private:
void _Init();
+ void _UpdateColors();
void
_GetChildViewRects(const BRect& bounds,
BRect&
titleRect, BRect& outlineRect,
BRect&
vScrollBarRect,
BRect&
hScrollBarRect);
rgb_color
fColorList[B_COLOR_TOTAL];
+ bool fCustomColors;
BPrivate::TitleView* fTitleView;
BPrivate::OutlineView* fOutlineView;
BList fColumns;
diff --git a/headers/private/interface/DecimalSpinner.h
b/headers/private/interface/DecimalSpinner.h
index 46161c7..9c97367 100644
--- a/headers/private/interface/DecimalSpinner.h
+++ b/headers/private/interface/DecimalSpinner.h
@@ -16,7 +16,7 @@ class BDecimalSpinner : public BAbstractSpinner {
public:
BDecimalSpinner(BRect frame, const char* name,
const
char* label, BMessage* message,
- uint32
resizingMode = B_FOLLOW_LEFT | B_FOLLOW_TOP,
+ uint32
resizingMode = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_NAVIGABLE);
BDecimalSpinner(const char* name, const char* label,
BMessage* message,
diff --git a/headers/private/interface/ViewPrivate.h
b/headers/private/interface/ViewPrivate.h
index 7d642d7..676454a 100644
--- a/headers/private/interface/ViewPrivate.h
+++ b/headers/private/interface/ViewPrivate.h
@@ -42,8 +42,11 @@ enum {
B_VIEW_PATTERN_BIT = 0x00020000,
B_VIEW_TRANSFORM_BIT = 0x00040000,
B_VIEW_FILL_RULE_BIT = 0x00080000,
+ B_VIEW_WHICH_VIEW_COLOR_BIT = 0x00100000,
+ B_VIEW_WHICH_LOW_COLOR_BIT = 0x00200000,
+ B_VIEW_WHICH_HIGH_COLOR_BIT = 0x00400000,
- B_VIEW_ALL_BITS = 0x000fffff,
+ B_VIEW_ALL_BITS = 0x00ffffff,
// these used for archiving only
B_VIEW_RESIZE_BIT = 0x00001000,
@@ -107,6 +110,15 @@ class ViewState {
// This one is not affected by pop state/push state
rgb_color view_color;
+ color_which which_view_color;
+ float which_view_color_tint;
+
+ // these are cached values
+ color_which which_low_color;
+ float which_low_color_tint;
+
+ color_which which_high_color;
+ float which_high_color_tint;
::pattern pattern;
diff --git a/headers/private/shared/CalendarView.h
b/headers/private/shared/CalendarView.h
index b7f0dce..d48c991 100644
--- a/headers/private/shared/CalendarView.h
+++ b/headers/private/shared/CalendarView.h
@@ -26,8 +26,7 @@ namespace BPrivate {
class BCalendarView : public BView, public BInvoker {
public:
BCalendarView(BRect frame, const char* name,
- uint32
resizeMask = B_FOLLOW_LEFT
-
| B_FOLLOW_TOP,
+ uint32
resizeMask = B_FOLLOW_LEFT_TOP,
uint32
flags = B_WILL_DRAW | B_FRAME_EVENTS
| B_NAVIGABLE);
diff --git a/src/kits/app/Application.cpp b/src/kits/app/Application.cpp
index c1c3f33..4de804b 100644
--- a/src/kits/app/Application.cpp
+++ b/src/kits/app/Application.cpp
@@ -1044,6 +1044,8 @@ BApplication::DispatchMessage(BMessage* message,
BHandler* handler)
return;
}
+ message->PrintToStream();
+
switch (message->what) {
case B_ARGV_RECEIVED:
_ArgvReceived(message);
@@ -1102,6 +1104,23 @@ BApplication::DispatchMessage(BMessage* message,
BHandler* handler)
break;
}
+ case B_COLORS_UPDATED:
+ {
+ AutoLocker<BLooperList> listLock(gLooperList);
+ if (!listLock.IsLocked())
+ break;
+
+ BWindow* window = NULL;
+ uint32 count = gLooperList.CountLoopers();
+ for (uint32 index = 0; index < count; ++index) {
+ window =
dynamic_cast<BWindow*>(gLooperList.LooperAt(index));
+ if (window == NULL || (window != NULL &&
window->fOffscreen))
+ continue;
+ window->PostMessage(message);
+ }
+ break;
+ }
+
case _SHOW_DRAG_HANDLES_:
{
bool show;
diff --git a/src/kits/app/Message.cpp b/src/kits/app/Message.cpp
index d182493..eac16f4 100644
--- a/src/kits/app/Message.cpp
+++ b/src/kits/app/Message.cpp
@@ -22,6 +22,7 @@
#include <AppMisc.h>
#include <BlockCache.h>
#include <Entry.h>
+#include <GraphicsDefs.h>
#include <MessageQueue.h>
#include <Messenger.h>
#include <Path.h>
@@ -735,6 +736,14 @@ BMessage::_PrintToStream(const char* indent) const
break;
}
+ case B_RGB_32_BIT_TYPE:
+ {
+ rgb_color* color = (rgb_color*)pointer;
+ printf("rgb_color(%u, %u, %u, %u)\n",
color->red,
+ color->green, color->blue,
color->alpha);
+ break;
+ }
+
default:
{
printf("(type = '%.4s')(size = %ld)\n",
(char*)&value,
@@ -2494,6 +2503,7 @@ DEFINE_FUNCTIONS(uint64, UInt64, B_UINT64_TYPE);
DEFINE_FUNCTIONS(bool, Bool, B_BOOL_TYPE);
DEFINE_FUNCTIONS(float, Float, B_FLOAT_TYPE);
DEFINE_FUNCTIONS(double, Double, B_DOUBLE_TYPE);
+DEFINE_FUNCTIONS(rgb_color, Color, B_RGB_32_BIT_TYPE);
#undef DEFINE_FUNCTIONS
@@ -2577,6 +2587,7 @@ DEFINE_SET_GET_FUNCTIONS(uint64, UInt64, B_UINT64_TYPE);
DEFINE_SET_GET_FUNCTIONS(bool, Bool, B_BOOL_TYPE);
DEFINE_SET_GET_FUNCTIONS(float, Float, B_FLOAT_TYPE);
DEFINE_SET_GET_FUNCTIONS(double, Double, B_DOUBLE_TYPE);
+DEFINE_SET_GET_FUNCTIONS(rgb_color, Color, B_RGB_32_BIT_TYPE);
#undef DEFINE_SET_GET_FUNCTION
diff --git a/src/kits/interface/ColorTools.cpp
b/src/kits/interface/ColorTools.cpp
deleted file mode 100644
index e4aea31..0000000
--- a/src/kits/interface/ColorTools.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Open Tracker License
-
-Terms and Conditions
-
-Copyright (c) 1991-2000, Be Incorporated. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice applies to all licensees
-and shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF TITLE, MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-BE INCORPORATED BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN
CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of Be Incorporated shall not be
-used in advertising or otherwise to promote the sale, use or other dealings in
-this Software without prior written authorization from Be Incorporated.
-
-Tracker(TM), Be(R), BeOS(R), and BeIA(TM) are trademarks or registered
trademarks
-of Be Incorporated in the United States and other countries. Other brand
product
-names are registered trademarks or trademarks of their respective holders.
-All rights reserved.
-*/
-
-/*******************************************************************************
-/
-/ File: ColorTools.cpp
-/
-/ Description: Additional experimental color manipulation functions.
-/
-/ Copyright 2000, Be Incorporated, All Rights Reserved
-/
-*******************************************************************************/
-
-#include "ColorTools.h"
-
-#if B_BEOS_VERSION <= B_BEOS_VERSION_MAUI
-
-namespace BExperimental {
-
-#if DEBUG
-#define DB_INLINE
-#else
-#define DB_INLINE inline
-#endif
-
-static DB_INLINE void mix_color_func(rgb_color* target, const rgb_color other,
uint8 amount)
-{
- target->red = (uint8)(
((int16(other.red)-int16(target->red))*amount)/255
- + target->red );
- target->green = (uint8)(
((int16(other.green)-int16(target->green))*amount)/255
- + target->green
);
- target->blue = (uint8)(
((int16(other.blue)-int16(target->blue))*amount)/255
- + target->blue
);
- target->alpha = (uint8)(
((int16(other.alpha)-int16(target->alpha))*amount)/255
- + target->alpha
);
-}
-
-static DB_INLINE void blend_color_func(rgb_color* target, const rgb_color
other, uint8 amount)
-{
- const uint8 alphaMix = (uint8)(
((int16(other.alpha)-int16(255-target->alpha))*amount)/255
- +
(255-target->alpha) );
- target->red = (uint8)(
((int16(other.red)-int16(target->red))*alphaMix)/255
- + target->red );
- target->green = (uint8)(
((int16(other.green)-int16(target->green))*alphaMix)/255
- + target->green
);
- target->blue = (uint8)(
((int16(other.blue)-int16(target->blue))*alphaMix)/255
- + target->blue
);
- target->alpha = (uint8)(
((int16(other.alpha)-int16(target->alpha))*amount)/255
- + target->alpha
);
-}
-
-static DB_INLINE void disable_color_func(rgb_color* target, const rgb_color
background)
-{
- blend_color_func(target, background, 255-70);
-}
-
-// --------------------------------------------------------------------------
-
-rgb_color mix_color(rgb_color color1, rgb_color color2, uint8 amount)
-{
- mix_color_func(&color1, color2, amount);
- return color1;
-}
-
-rgb_color blend_color(rgb_color color1, rgb_color color2, uint8 amount)
-{
- blend_color_func(&color1, color2, amount);
- return color1;
-}
-
-rgb_color disable_color(rgb_color color, rgb_color background)
-{
- disable_color_func(&color, background);
- return color;
-}
-
-}
-
-#endif
diff --git a/src/kits/interface/GraphicsDefs.cpp
b/src/kits/interface/GraphicsDefs.cpp
index db59bd5..b40e395 100644
--- a/src/kits/interface/GraphicsDefs.cpp
+++ b/src/kits/interface/GraphicsDefs.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2001-2008, Haiku.
+ * Copyright 2001-2015, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
@@ -36,6 +36,58 @@ const uint32 B_TRANSPARENT_MAGIC_RGBA32_BIG = 0x77747700;
const struct screen_id B_MAIN_SCREEN_ID = {0};
+// rgb_color
+int32
+rgb_color::Brightness() const
+{
+ return ((int32)red * 41 + (int32)green * 187 + (int32)blue * 28) >> 8;
+}
+
+
+// Mix two colors without respect for their alpha values
+rgb_color
+mix_color(rgb_color color1, rgb_color color2, uint8 amount)
+{
+ color1.red = (uint8)(((int16(color2.red) - int16(color1.red)) * amount)
+ / 255 + color1.red);
+ color1.green = (uint8)(((int16(color2.green) - int16(color1.green))
+ * amount) / 255 + color1.green);
+ color1.blue = (uint8)(((int16(color2.blue) - int16(color1.blue)) *
amount)
+ / 255 + color1.blue );
+ color1.alpha = (uint8)(((int16(color2.alpha) - int16(color1.alpha))
+ * amount) / 255 + color1.alpha );
+
+ return color1;
+}
+
+
+// Mix two colors, respecting their alpha values.
+rgb_color
+blend_color(rgb_color color1, rgb_color color2, uint8 amount)
+{
+ const uint8 alphaMix = (uint8)(((int16(color2.alpha) - int16(255
+ - color1.alpha)) * amount) / 255 + (255 - color1.alpha));
+
+ color1.red = (uint8)(((int16(color2.red) - int16(color1.red)) *
alphaMix)
+ / 255 + color1.red );
+ color1.green = (uint8)(((int16(color2.green) - int16(color1.green))
+ * alphaMix) / 255 + color1.green);
+ color1.blue = (uint8)(((int16(color2.blue) - int16(color1.blue))
+ * alphaMix) / 255 + color1.blue);
+ color1.alpha = (uint8)(((int16(color2.alpha) - int16(color1.alpha))
+ * amount) / 255 + color1.alpha);
+
+ return color1;
+}
+
+
+rgb_color
+disable_color(rgb_color color, rgb_color background)
+{
+ return mix_color(color, background, 185);
+}
+
+
status_t
get_pixel_size_for(color_space space, size_t *pixelChunk, size_t *rowAlignment,
size_t *pixelsPerChunk)
diff --git a/src/kits/interface/InterfaceDefs.cpp
b/src/kits/interface/InterfaceDefs.cpp
index 880f786..97017b3 100644
--- a/src/kits/interface/InterfaceDefs.cpp
+++ b/src/kits/interface/InterfaceDefs.cpp
@@ -8,6 +8,7 @@
* Axel Dörfler, axeld@xxxxxxxxxxxxxxxx
* Michael Lotz <mmlr@xxxxxxxx>
* Wim van der Meer <WPJvanderMeer@xxxxxxxxx>
+ * Joseph Groover <looncraz@xxxxxxxxxxxx>
*/
@@ -39,6 +40,7 @@
#include <ColorConversion.h>
#include <DecorInfo.h>
#include <DefaultColors.h>
+#include <DesktopLink.h>
#include <InputServerTypes.h>
#include <input_globals.h>
#include <InterfacePrivate.h>
@@ -102,6 +104,10 @@ static const rgb_color _kDefaultColors[kColorWhichCount] =
{
{0, 0, 0, 255}, // B_LIST_ITEM_TEXT_COLOR
{0, 0, 0, 255}, // B_LIST_SELECTED_ITEM_TEXT_COLOR
{216, 216, 216, 255}, // B_SCROLL_BAR_THUMB_COLOR
+ {51, 102, 187, 255}, // B_LINK_TEXT_COLOR
+ {102, 152, 203, 255}, // B_LINK_HOVER_COLOR
+ {145, 112, 155, 255}, // B_LINK_VISITED_COLOR
+ {121, 142, 203, 255}, // B_LINK_ACTIVE_COLOR
// 100...
{46, 204, 64, 255}, // B_SUCCESS_COLOR
{255, 65, 54, 255}, // B_FAILURE_COLOR
@@ -110,6 +116,50 @@ static const rgb_color _kDefaultColors[kColorWhichCount] =
{
const rgb_color* BPrivate::kDefaultColors = &_kDefaultColors[0];
+static const char* kColorNames[kColorWhichCount] = {
+ "B_PANEL_BACKGROUND_COLOR",
+ "B_MENU_BACKGROUND_COLOR",
+ "B_WINDOW_TAB_COLOR",
+ "B_KEYBOARD_NAVIGATION_COLOR",
+ "B_DESKTOP_COLOR",
+ "B_MENU_SELECTED_BACKGROUND_COLOR",
+ "B_MENU_ITEM_TEXT_COLOR",
+ "B_MENU_SELECTED_ITEM_TEXT_COLOR",
+ "B_MENU_SELECTED_BORDER_COLOR",
+ "B_PANEL_TEXT_COLOR",
+ "B_DOCUMENT_BACKGROUND_COLOR",
+ "B_DOCUMENT_TEXT_COLOR",
+ "B_CONTROL_BACKGROUND_COLOR",
+ "B_CONTROL_TEXT_COLOR",
+ "B_CONTROL_BORDER_COLOR",
+ "B_CONTROL_HIGHLIGHT_COLOR",
+ "B_NAVIGATION_PULSE_COLOR",
+ "B_SHINE_COLOR",
+ "B_SHADOW_COLOR",
+ "B_TOOLTIP_BACKGROUND_COLOR",
+ "B_TOOLTIP_TEXT_COLOR",
+ "B_WINDOW_TEXT_COLOR",
+ "B_WINDOW_INACTIVE_TAB_COLOR",
+ "B_WINDOW_INACTIVE_TEXT_COLOR",
+ "B_WINDOW_BORDER_COLOR",
+ "B_WINDOW_INACTIVE_BORDER_COLOR",
+ "B_CONTROL_MARK_COLOR",
+ "B_LIST_BACKGROUND_COLOR",
+ "B_LIST_SELECTED_BACKGROUND_COLOR",
+ "B_LIST_ITEM_TEXT_COLOR",
+ "B_LIST_SELECTED_ITEM_TEXT_COLOR",
+ "B_SCROLL_BAR_THUMB_COLOR",
+ "B_LINK_TEXT_COLOR",
+ "B_LINK_HOVER_COLOR",
+ "B_LINK_VISITED_COLOR",
+ "B_LINK_ACTIVE_COLOR",
+ // 100...
+ "B_SUCCESS_COLOR",
+ "B_FAILURE_COLOR",
+ NULL
+};
+
+
namespace BPrivate {
@@ -1079,14 +1129,51 @@ ui_color(color_which which)
if (be_app != NULL) {
server_read_only_memory* shared
= BApplication::Private::ServerReadOnlyMemory();
- if (shared != NULL)
+ if (shared != NULL) {
+ // check for unset colors
+ if (shared->colors[index] == B_TRANSPARENT_COLOR)
+ shared->colors[index] = kDefaultColors[index];
+
return shared->colors[index];
+ }
}
return kDefaultColors[index];
}
+const char*
+ui_color_name(color_which which)
+{
+ // Suppress warnings for B_NO_COLOR.
+ if (which == B_NO_COLOR)
+ return NULL;
+
+ int32 index = color_which_to_index(which);
+ if (index < 0 || index >= kColorWhichCount) {
+ fprintf(stderr, "ui_color_name(): unknown color_which %d\n",
which);
+ return NULL;
+ }
+
+ return kColorNames[index];
+}
+
+
+color_which
+which_ui_color(const char* name)
+{
+ if (name == NULL)
+ return B_NO_COLOR;
+
+ for (int32 index = 0; index < kColorWhichCount; ++index) {
+ if (!strcmp(kColorNames[index], name))
+ return index_to_color_which(index);
+ }
+
+ return B_NO_COLOR;
+}
+
+
void
set_ui_color(const color_which &which, const rgb_color &color)
{
@@ -1096,7 +1183,10 @@ set_ui_color(const color_which &which, const rgb_color
&color)
return;
}
- BPrivate::AppServerLink link;
+ if (ui_color(which) == color)
+ return;
+
+ BPrivate::DesktopLink link;
link.StartMessage(AS_SET_UI_COLOR);
link.Attach<color_which>(which);
link.Attach<rgb_color>(color);
@@ -1104,6 +1194,48 @@ set_ui_color(const color_which &which, const rgb_color
&color)
}
+void
+set_ui_colors(const BMessage* colors)
+{
+ if (colors == NULL)
+ return;
+
+ int32 count = 0;
+ int32 index = 0;
+ char* name = NULL;
+ type_code type;
+ rgb_color color;
+ color_which which = B_NO_COLOR;
+
+ BPrivate::DesktopLink desktop;
+ if (desktop.InitCheck() != B_OK)
+ return;
+
+ desktop.StartMessage(AS_SET_UI_COLORS);
+ desktop.Attach<bool>(false);
+
+ // Only colors with names that map to system colors will get through.
+ while (colors->GetInfo(B_RGB_32_BIT_TYPE, index, &name, &type) == B_OK)
{
+
+ which = which_ui_color(name);
+ ++index;
+
+ if (which == B_NO_COLOR || colors->FindColor(name, &color) !=
B_OK)
+ continue;
+
+ desktop.Attach<color_which>(which);
+ desktop.Attach<rgb_color>(color);
+ ++count;
+ }
+
+ if (count == 0)
+ return;
+
+ desktop.Attach<color_which>(B_NO_COLOR);
+ desktop.Flush();
+}
+
+
rgb_color
tint_color(rgb_color color, float tint)
{
diff --git a/src/kits/interface/Jamfile b/src/kits/interface/Jamfile
index c02b07b..561005e 100644
--- a/src/kits/interface/Jamfile
+++ b/src/kits/interface/Jamfile
@@ -57,7 +57,6 @@ for architectureObject in [ MultiArchSubDirSetup ] {
CheckBox.cpp
ColorConversion.cpp
ColorControl.cpp
- ColorTools.cpp
Control.cpp
ControlLook.cpp
DecorInfo.cpp
diff --git a/src/kits/interface/View.cpp b/src/kits/interface/View.cpp
index 0a0f2b4..21b563f 100644
--- a/src/kits/interface/View.cpp
+++ b/src/kits/interface/View.cpp
@@ -8,6 +8,7 @@
* Adrian Oanca, adioanca@xxxxxxxxxxxxx
* Ingo Weinhold. ingo_weinhold@xxxxxx
* Julian Harnath, julian.harnath@xxxxxxxxxxxxxx
+ * Joseph Groover, looncraz@xxxxxxxxxxxx
*/
@@ -141,6 +142,14 @@ ViewState::ViewState()
high_color = (rgb_color){ 0, 0, 0, 255 };
low_color = (rgb_color){ 255, 255, 255, 255 };
view_color = low_color;
+ which_view_color = B_NO_COLOR;
+ which_view_color_tint = B_NO_TINT;
+
+ which_high_color = B_NO_COLOR;
+ which_high_color_tint = B_NO_TINT;
+
+ which_low_color = B_NO_COLOR;
+ which_low_color_tint = B_NO_TINT;
pattern = B_SOLID_HIGH;
drawing_mode = B_OP_COPY;
@@ -220,6 +229,10 @@ ViewState::UpdateServerState(BPrivate::PortLink &link)
info.penSize = pen_size;
info.highColor = high_color;
info.lowColor = low_color;
+ info.whichHighColor = which_high_color;
+ info.whichLowColor = which_low_color;
+ info.whichHighColorTint = which_high_color_tint;
+ info.whichLowColorTint = which_low_color_tint;
info.pattern = pattern;
info.drawingMode = drawing_mode;
info.origin = origin;
@@ -456,7 +469,7 @@ BView::BView(BMessage* archive)
| B_FONT_SHEAR | B_FONT_ROTATION);
}
- int32 color;
+ int32 color = 0;
if (archive->FindInt32("_color", 0, &color) == B_OK)
SetHighColor(get_rgb_color(color));
if (archive->FindInt32("_color", 1, &color) == B_OK)
@@ -464,6 +477,29 @@ BView::BView(BMessage* archive)
if (archive->FindInt32("_color", 2, &color) == B_OK)
SetViewColor(get_rgb_color(color));
+ float tint = B_NO_TINT;
+ if (archive->FindInt32("_uicolor", 0, &color) == B_OK
+ && color != B_NO_COLOR) {
+ if (archive->FindFloat("_uitint", 0, &tint) != B_OK)
+ tint = B_NO_TINT;
+
+ SetHighUIColor((color_which)color, tint);
+ }
+ if (archive->FindInt32("_uicolor", 1, &color) == B_OK
+ && color != B_NO_COLOR) {
+ if (archive->FindFloat("_uitint", 1, &tint) != B_OK)
+ tint = B_NO_TINT;
+
+ SetLowUIColor((color_which)color, tint);
+ }
+ if (archive->FindInt32("_uicolor", 2, &color) == B_OK
+ && color != B_NO_COLOR) {
+ if (archive->FindFloat("_uitint", 2, &tint) != B_OK)
+ tint = B_NO_TINT;
+
+ SetViewUIColor((color_which)color, tint);
+ }
+
uint32 evMask;
uint32 options;
if (archive->FindInt32("_evmask", 0, (int32*)&evMask) == B_OK
@@ -595,6 +631,20 @@ BView::Archive(BMessage* data, bool deep) const
if (ret == B_OK)
ret = data->AddInt32("_color", get_uint32_color(ViewColor()));
+ if (ret == B_OK)
+ ret = data->AddInt32("_uicolor", (int32)HighUIColor());
+ if (ret == B_OK)
+ ret = data->AddInt32("_uicolor", (int32)LowUIColor());
+ if (ret == B_OK)
+ ret = data->AddInt32("_uicolor", (int32)ViewUIColor());
+
+ if (ret == B_OK)
+ ret = data->AddFloat("_uitint", fState->which_high_color_tint);
+ if (ret == B_OK)
+ ret = data->AddFloat("_uitint", fState->which_low_color_tint);
+ if (ret == B_OK)
+ ret = data->AddFloat("_uitint", fState->which_view_color_tint);
+
// NOTE: we do not use this flag any more
// if ( 1 ){
// ret = data->AddInt32("_dbuf", 1);
@@ -2304,6 +2354,8 @@ BView::PenSize() const
void
BView::SetHighColor(rgb_color color)
{
+ SetHighUIColor(B_NO_COLOR);
+
// are we up-to-date already?
if (fState->IsValid(B_VIEW_HIGH_COLOR_BIT)
&& fState->high_color == color)
@@ -2346,8 +2398,72 @@ BView::HighColor() const
void
+BView::SetHighUIColor(color_which which, float tint)
+{
+ if (fState->IsValid(B_VIEW_WHICH_HIGH_COLOR_BIT)
+ && fState->which_high_color == which
+ && fState->which_high_color_tint == tint)
+ return;
+
+ if (fOwner != NULL) {
+ _CheckLockAndSwitchCurrent();
+
+ fOwner->fLink->StartMessage(AS_VIEW_SET_HIGH_UI_COLOR);
+ fOwner->fLink->Attach<color_which>(which);
+ fOwner->fLink->Attach<float>(tint);
+
+ fState->valid_flags |= B_VIEW_WHICH_HIGH_COLOR_BIT;
+ }
+
+ fState->which_high_color = which;
+ fState->which_high_color_tint = tint;
+
+ if (which != B_NO_COLOR) {
+ fState->archiving_flags |= B_VIEW_WHICH_HIGH_COLOR_BIT;
+ fState->archiving_flags &= ~B_VIEW_HIGH_COLOR_BIT;
+ fState->valid_flags |= B_VIEW_HIGH_COLOR_BIT;
+
+ fState->high_color = tint_color(ui_color(which), tint);
+ } else {
+ fState->valid_flags &= ~B_VIEW_HIGH_COLOR_BIT;
+ fState->archiving_flags &= ~B_VIEW_WHICH_HIGH_COLOR_BIT;
+ }
+}
+
+
+color_which
+BView::HighUIColor(float* tint) const
+{
+ if (!fState->IsValid(B_VIEW_WHICH_HIGH_COLOR_BIT)
+ && fOwner != NULL) {
+ _CheckLockAndSwitchCurrent();
+
+ fOwner->fLink->StartMessage(AS_VIEW_GET_HIGH_UI_COLOR);
+
+ int32 code;
+ if (fOwner->fLink->FlushWithReply(code) == B_OK
+ && code == B_OK) {
+
fOwner->fLink->Read<color_which>(&fState->which_high_color);
+
fOwner->fLink->Read<float>(&fState->which_high_color_tint);
+ fOwner->fLink->Read<rgb_color>(&fState->high_color);
+
+ fState->valid_flags |= B_VIEW_WHICH_HIGH_COLOR_BIT;
+ fState->valid_flags |= B_VIEW_HIGH_COLOR_BIT;
+ }
+ }
+
+ if (tint != NULL)
+ *tint = fState->which_high_color_tint;
+
+ return fState->which_high_color;
+}
+
+
+void
BView::SetLowColor(rgb_color color)
{
+ SetLowUIColor(B_NO_COLOR);
+
if (fState->IsValid(B_VIEW_LOW_COLOR_BIT)
&& fState->low_color == color)
return;
@@ -2389,9 +2505,150 @@ BView::LowColor() const
void
+BView::SetLowUIColor(color_which which, float tint)
+{
+ if (fState->IsValid(B_VIEW_WHICH_LOW_COLOR_BIT)
+ && fState->which_low_color == which
+ && fState->which_low_color_tint == tint)
+ return;
+
+ if (fOwner != NULL) {
+ _CheckLockAndSwitchCurrent();
+
+ fOwner->fLink->StartMessage(AS_VIEW_SET_LOW_UI_COLOR);
+ fOwner->fLink->Attach<color_which>(which);
+ fOwner->fLink->Attach<float>(tint);
+
+ fState->valid_flags |= B_VIEW_WHICH_LOW_COLOR_BIT;
+ }
+
+ fState->which_low_color = which;
+ fState->which_low_color_tint = tint;
+
+ if (which != B_NO_COLOR) {
+ fState->archiving_flags |= B_VIEW_WHICH_LOW_COLOR_BIT;
+ fState->archiving_flags &= ~B_VIEW_LOW_COLOR_BIT;
+ fState->valid_flags |= B_VIEW_LOW_COLOR_BIT;
+
+ fState->low_color = tint_color(ui_color(which), tint);
+ } else {
+ fState->valid_flags &= ~B_VIEW_LOW_COLOR_BIT;
+ fState->archiving_flags &= ~B_VIEW_WHICH_LOW_COLOR_BIT;
+ }
+}
+
+
+color_which
+BView::LowUIColor(float* tint) const
+{
+ if (!fState->IsValid(B_VIEW_WHICH_LOW_COLOR_BIT)
+ && fOwner != NULL) {
+ _CheckLockAndSwitchCurrent();
+
+ fOwner->fLink->StartMessage(AS_VIEW_GET_LOW_UI_COLOR);
+
+ int32 code;
+ if (fOwner->fLink->FlushWithReply(code) == B_OK
+ && code == B_OK) {
+
fOwner->fLink->Read<color_which>(&fState->which_low_color);
+
fOwner->fLink->Read<float>(&fState->which_low_color_tint);
+ fOwner->fLink->Read<rgb_color>(&fState->low_color);
+
+ fState->valid_flags |= B_VIEW_WHICH_LOW_COLOR_BIT;
+ fState->valid_flags |= B_VIEW_LOW_COLOR_BIT;
+ }
+ }
+
+ if (tint != NULL)
+ *tint = fState->which_low_color_tint;
+
+ return fState->which_low_color;
+}
+
+
+bool
+BView::HasDefaultColors() const
+{
+ // If we don't have any of these flags, then we have default colors
+ uint32 testMask = B_VIEW_VIEW_COLOR_BIT | B_VIEW_HIGH_COLOR_BIT
+ | B_VIEW_LOW_COLOR_BIT | B_VIEW_WHICH_VIEW_COLOR_BIT
+ | B_VIEW_WHICH_HIGH_COLOR_BIT | B_VIEW_WHICH_LOW_COLOR_BIT;
+
+ return (fState->archiving_flags & testMask) == 0;
+}
+
+
+bool
+BView::HasSystemColors() const
+{
+ return fState->which_view_color == B_PANEL_BACKGROUND_COLOR
+ && fState->which_high_color == B_PANEL_TEXT_COLOR
+ && fState->which_low_color == B_PANEL_BACKGROUND_COLOR
+ && fState->which_view_color_tint == B_NO_TINT
+ && fState->which_high_color_tint == B_NO_TINT
+ && fState->which_low_color_tint == B_NO_TINT;
+}
+
+
+void
+BView::AdoptParentColors()
+{
+ AdoptViewColors(Parent());
+}
+
+
+void
+BView::AdoptSystemColors()
+{
+ SetViewUIColor(B_PANEL_BACKGROUND_COLOR);
+ SetLowUIColor(B_PANEL_BACKGROUND_COLOR);
+ SetHighUIColor(B_PANEL_TEXT_COLOR);
+}
+
+
+void
+BView::AdoptViewColors(BView* view)
+{
+ if (view == NULL || !view->LockLooper())
+ return;
+
+ float tint = B_NO_TINT;
+ float viewTint = tint;
+ color_which viewWhich = view->ViewUIColor(&viewTint);
+
+ // View color
+ if (viewWhich != B_NO_COLOR)
+ SetViewUIColor(viewWhich, viewTint);
+ else
+ SetViewColor(view->ViewColor());
+
+ // Low color
+ color_which which = view->LowUIColor(&tint);
+ if (which != B_NO_COLOR)
+ SetLowUIColor(which, tint);
+ else if (viewWhich != B_NO_COLOR)
+ SetLowUIColor(viewWhich, viewTint);
+ else
+ SetLowColor(view->LowColor());
+
+ // High color
+ which = view->HighUIColor(&tint);
+ if (which != B_NO_COLOR)
+ SetHighUIColor(which, tint);
+ else
+ SetHighColor(view->HighColor());
+
+ view->UnlockLooper();
+}
+
+
+void
BView::SetViewColor(rgb_color color)
{
- if (fState->IsValid(B_VIEW_VIEW_COLOR_BIT) && fState->view_color ==
color)
+ SetViewUIColor(B_NO_COLOR);
+
+ if (fState->IsValid(B_VIEW_VIEW_COLOR_BIT)
+ && fState->view_color == color)
return;
if (fOwner) {
@@ -2432,6 +2689,71 @@ BView::ViewColor() const
void
+BView::SetViewUIColor(color_which which, float tint)
+{
+ if (fState->IsValid(B_VIEW_WHICH_VIEW_COLOR_BIT)
+ && fState->which_view_color == which
+ && fState->which_view_color_tint == tint)
+ return;
+
+ if (fOwner != NULL) {
+ _CheckLockAndSwitchCurrent();
+
+ fOwner->fLink->StartMessage(AS_VIEW_SET_VIEW_UI_COLOR);
+ fOwner->fLink->Attach<color_which>(which);
+ fOwner->fLink->Attach<float>(tint);
+
+ fState->valid_flags |= B_VIEW_WHICH_VIEW_COLOR_BIT;
+ }
+
+ fState->which_view_color = which;
+ fState->which_view_color_tint = tint;
+
+ if (which != B_NO_COLOR) {
+ fState->archiving_flags |= B_VIEW_WHICH_VIEW_COLOR_BIT;
+ fState->archiving_flags &= ~B_VIEW_VIEW_COLOR_BIT;
+ fState->valid_flags |= B_VIEW_VIEW_COLOR_BIT;
+
+ fState->view_color = tint_color(ui_color(which), tint);
+ } else {
+ fState->valid_flags &= ~B_VIEW_VIEW_COLOR_BIT;
+ fState->archiving_flags &= ~B_VIEW_WHICH_VIEW_COLOR_BIT;
+ }
+
+ if (!fState->IsValid(B_VIEW_WHICH_LOW_COLOR_BIT))
+ SetLowUIColor(which, tint);
+}
+
+
+color_which
+BView::ViewUIColor(float* tint) const
+{
+ if (!fState->IsValid(B_VIEW_WHICH_VIEW_COLOR_BIT)
+ && fOwner != NULL) {
+ _CheckLockAndSwitchCurrent();
+
+ fOwner->fLink->StartMessage(AS_VIEW_GET_VIEW_UI_COLOR);
+
+ int32 code;
+ if (fOwner->fLink->FlushWithReply(code) == B_OK
+ && code == B_OK) {
+
fOwner->fLink->Read<color_which>(&fState->which_view_color);
+
fOwner->fLink->Read<float>(&fState->which_view_color_tint);
+ fOwner->fLink->Read<rgb_color>(&fState->view_color);
+
+ fState->valid_flags |= B_VIEW_WHICH_VIEW_COLOR_BIT;
+ fState->valid_flags |= B_VIEW_VIEW_COLOR_BIT;
+ }
+ }
+
+ if (tint != NULL)
+ *tint = fState->which_view_color_tint;
+
+ return fState->which_view_color;
+}
+
+
+void
BView::ForceFontAliasing(bool enable)
{
if (fState->IsValid(B_VIEW_FONT_ALIASING_BIT)
@@ -4100,6 +4422,35 @@ BView::Invalidate()
void
+BView::DelayedInvalidate(bigtime_t delay)
+{
+ DelayedInvalidate(delay, Bounds());
+}
+
+
+void
+BView::DelayedInvalidate(bigtime_t delay, BRect invalRect)
+{
+ if (fOwner == NULL)
+ return;
+
+ invalRect.left = (int)invalRect.left;
+ invalRect.top = (int)invalRect.top;
+ invalRect.right = (int)invalRect.right;
+ invalRect.bottom = (int)invalRect.bottom;
+ if (!invalRect.IsValid())
+ return;
+
+ _CheckLockAndSwitchCurrent();
+
+ fOwner->fLink->StartMessage(AS_VIEW_DELAYED_INVALIDATE_RECT);
+ fOwner->fLink->Attach<bigtime_t>(system_time() + delay);
+ fOwner->fLink->Attach<BRect>(invalRect);
+ fOwner->fLink->Flush();
+}
+
+
+void
BView::InvertRect(BRect rect)
{
if (fOwner) {
@@ -4598,6 +4949,11 @@ BView::MessageReceived(BMessage* message)
break;
}
+ // prevent message repeats
+ case B_COLORS_UPDATED:
+ case B_FONTS_UPDATED:
+ break;
+
default:
BHandler::MessageReceived(message);
break;
[ *** diff truncated: 3035 lines dropped *** ]
############################################################################
Commit: 7a96554cb32dc03c3a68b401a3d4083f9b866668
URL: http://cgit.haiku-os.org/haiku/commit/?id=7a96554cb32d
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:53:17 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 12:04:45 2016 UTC
kits/interface: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0003-0017 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Commit: a4f254fa49a123689f31fb440db38b9a97268979
URL: http://cgit.haiku-os.org/haiku/commit/?id=a4f254fa49a1
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jan 4 12:06:55 2016 UTC
Remove printf() definition added in previous commit.
----------------------------------------------------------------------------
############################################################################
Commit: 3199cff3224b1886af9a87a220ce3c4e9cb7dd65
URL: http://cgit.haiku-os.org/haiku/commit/?id=3199cff3224b
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jan 4 12:08:24 2016 UTC
kits/interface: Convert the new BCardView over as well.
----------------------------------------------------------------------------
############################################################################
Commit: d8ca833a3503acd69aee35ed99aa0e35fd0afbde
URL: http://cgit.haiku-os.org/haiku/commit/?id=d8ca833a3503
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jan 4 12:10:54 2016 UTC
SliderTest: dos2unix.
----------------------------------------------------------------------------
############################################################################
Commit: d231c2a7a54fd2f3d003a5d2cb8717614fc17626
URL: http://cgit.haiku-os.org/haiku/commit/?id=d231c2a7a54f
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:53:22 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 12:15:57 2016 UTC
tests: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0018-0019 from looncraz.
----------------------------------------------------------------------------
############################################################################
Commit: 1a8c00c14bf5a31835697c93f3f92fd860de0a10
URL: http://cgit.haiku-os.org/haiku/commit/?id=1a8c00c14bf5
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:53:27 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 12:18:48 2016 UTC
servers: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0020-0022 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Commit: f0650dc98fed895fc134a359aab99c27de6a0c6a
URL: http://cgit.haiku-os.org/haiku/commit/?id=f0650dc98fed
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:53:56 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 12:21:14 2016 UTC
preferences: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0023-0037 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Commit: c5b4dc4007fb844b1f18475cf4b37591da128fbe
URL: http://cgit.haiku-os.org/haiku/commit/?id=c5b4dc4007fb
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:54:01 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 12:24:41 2016 UTC
Tracker: Use Set*UIColor, improved font awareness.
InfoWindow now uses the font size to determine the window size and
placement of elements. Also uses system colors, including link
colors. Permissions view not font sensitive yet.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patch 0039 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Commit: f56d45ced4856b2f8943d7e5c1b1de6a78be9f38
URL: http://cgit.haiku-os.org/haiku/commit/?id=f56d45ced485
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:54:05 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 12:27:25 2016 UTC
BToolBar: Convert to using Set*UIColor.
This was a bigger change than many others as BButton now defaults to using
control background colors, and we can not do that here without the buttons
not appearing as we desire (blending in with the toolbar).
Using the control background color for the toolbar would be unacceptable.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patch 0041 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Commit: f696e88a2ccab23dedcbf03dc8e7560f1770338b
URL: http://cgit.haiku-os.org/haiku/commit/?id=f696e88a2cca
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:54:10 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 12:29:14 2016 UTC
Convert various more things to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0038, 0040, 0042-0044 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Commit: fa19dd4470177c1c769d49a660ea9e20f4ad6561
URL: http://cgit.haiku-os.org/haiku/commit/?id=fa19dd447017
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Fri Dec 11 00:00:01 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 12:33:09 2016 UTC
apps: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0045-0075, 0077-0087 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Commit: 673b9591b2526cf2b53b13eb8b270b5c7967f6f3
URL: http://cgit.haiku-os.org/haiku/commit/?id=673b9591b252
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jan 4 17:42:59 2016 UTC
app_server: Remove include looncraz forgot to remove.
----------------------------------------------------------------------------
############################################################################
Commit: e8a15cb354d6b7efd9b5385aeceee6074868df16
URL: http://cgit.haiku-os.org/haiku/commit/?id=e8a15cb354d6
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jan 4 18:32:22 2016 UTC
Mail preferences: Delete added code to resize the window.
Breaks the build, and shouldn't be needed anyway.
----------------------------------------------------------------------------
############################################################################
Commit: 16c1051785368b6afe925505c9dffa3a6cfe06ba
URL: http://cgit.haiku-os.org/haiku/commit/?id=16c105178536
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:55:08 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 18:35:12 2016 UTC
Deskbar: Convert to using Set*UIColor.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patches 0076 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Commit: 2567fac21d1a62d4a965559f913fc3407c021df1
URL: http://cgit.haiku-os.org/haiku/commit/?id=2567fac21d1a
Author: looncraz <looncraz@xxxxxxxxxxxx>
Date: Thu Dec 10 18:52:50 2015 UTC
Committer: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Commit-Date: Mon Jan 4 18:37:33 2016 UTC
app_server: Fix for LinkReciever.
LinkReceiver would spin endlessly when given a timeout value which prevented
DelayedMessageSender from being operational.
Signed-off-by: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Patch 0002 from looncraz, unmodified.
----------------------------------------------------------------------------
############################################################################
Revision: hrev49977
Commit: 36cbd68b3765d104759c1abdbaa4c547fcd57600
URL: http://cgit.haiku-os.org/haiku/commit/?id=36cbd68b3765
Author: Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date: Mon Jan 4 18:45:44 2016 UTC
Various Jamfiles: Remove added "UsePrivateHeaders interface".
Added by looncraz in previous commits, and not needed.
----------------------------------------------------------------------------