[haiku-commits] haiku: hrev49977 - in src: servers/app kits/interface apps preferences/appearance .

  • From: waddlesplash@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 4 Jan 2016 19:48:54 +0100 (CET)

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.

----------------------------------------------------------------------------


Other related posts: