diff --git a/src/kits/interface/AbstractSpinner.cpp b/src/kits/interface/AbstractSpinner.cpp index 89e584fc87..00c297b0e1 100644 --- a/src/kits/interface/AbstractSpinner.cpp +++ b/src/kits/interface/AbstractSpinner.cpp @@ -171,6 +171,9 @@ public: const BMessage* message); virtual void MessageReceived(BMessage* message); + void AdoptSystemColors(); + bool HasSystemColors() const; + bool IsEnabled() const { return fIsEnabled; } virtual void SetEnabled(bool enable) { fIsEnabled = enable; }; @@ -322,7 +325,7 @@ SpinnerButton::AttachedToWindow() { fParent = static_cast(Parent()); - AdoptParentColors(); + AdoptSystemColors(); BView::AttachedToWindow(); } @@ -425,8 +428,6 @@ SpinnerButton::Draw(BRect updateRect) if (rect.IntegerHeight() % 2 != 0) rect.bottom -= 1; - SetHighColor(tint_color(bgColor, fgTint)); - // draw the +/- float halfHeight = floorf(rect.Height() / 2); StrokeLine(BPoint(rect.left, rect.top + halfHeight), @@ -441,6 +442,26 @@ SpinnerButton::Draw(BRect updateRect) } +void +SpinnerButton::AdoptSystemColors() +{ + SetViewUIColor(B_CONTROL_BACKGROUND_COLOR); + SetLowUIColor(B_CONTROL_BACKGROUND_COLOR); + SetHighUIColor(B_CONTROL_TEXT_COLOR); +} + + +bool +SpinnerButton::HasSystemColors() const +{ + float tint = B_NO_TINT; + + return ViewUIColor(&tint) == B_CONTROL_BACKGROUND_COLOR && tint == B_NO_TINT + && LowUIColor(&tint) == B_CONTROL_BACKGROUND_COLOR && tint == B_NO_TINT + && HighUIColor(&tint) == B_CONTROL_TEXT_COLOR && tint == B_NO_TINT; +} + + void SpinnerButton::MouseDown(BPoint where) { diff --git a/src/kits/interface/BMCPrivate.cpp b/src/kits/interface/BMCPrivate.cpp index 6db8a248e2..26209f1b7d 100644 --- a/src/kits/interface/BMCPrivate.cpp +++ b/src/kits/interface/BMCPrivate.cpp @@ -162,15 +162,7 @@ _BMCMenuBar_::AttachedToWindow() if (fFixedSize && (Flags() & B_SUPPORTS_LAYOUT) == 0) SetResizingMode(B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP); - if (Parent() != NULL) { - color_which which = Parent()->LowUIColor(); - if (which == B_NO_COLOR) - SetLowColor(Parent()->LowColor()); - else - SetLowUIColor(which); - - } else - SetLowUIColor(B_MENU_BACKGROUND_COLOR); + SetLowUIColor(B_CONTROL_BACKGROUND_COLOR); fPreviousWidth = Bounds().Width(); } @@ -198,7 +190,6 @@ _BMCMenuBar_::Draw(BRect updateRect) } BRect rect(Bounds()); - rgb_color base = ui_color(B_MENU_BACKGROUND_COLOR); uint32 flags = 0; if (!IsEnabled()) flags |= BControlLook::B_DISABLED; @@ -206,7 +197,7 @@ _BMCMenuBar_::Draw(BRect updateRect) flags |= BControlLook::B_FOCUSED; be_control_look->DrawMenuFieldBackground(this, rect, - updateRect, base, fShowPopUpMarker, flags); + updateRect, LowColor(), fShowPopUpMarker, flags); DrawItems(updateRect); } diff --git a/src/kits/interface/Button.cpp b/src/kits/interface/Button.cpp index bc9ab72d66..7e91b13c53 100644 --- a/src/kits/interface/Button.cpp +++ b/src/kits/interface/Button.cpp @@ -134,6 +134,7 @@ BButton::Draw(BRect updateRect) BRect rect(Bounds()); rgb_color background = ViewColor(); rgb_color base = LowColor(); + rgb_color text = HighColor(); uint32 flags = be_control_look->Flags(this); if (_Flag(FLAG_DEFAULT)) @@ -156,7 +157,7 @@ BButton::Draw(BRect updateRect) | (IsEnabled() ? 0 : B_DISABLED_ICON_BITMAP)); be_control_look->DrawLabel(this, Label(), icon, rect, updateRect, base, flags, - BAlignment(B_ALIGN_CENTER, B_ALIGN_MIDDLE)); + BAlignment(B_ALIGN_CENTER, B_ALIGN_MIDDLE), &text); } @@ -221,12 +222,7 @@ void BButton::AttachedToWindow() { BControl::AttachedToWindow(); - - // tint low color to match background - if (ViewColor().IsLight()) - SetLowUIColor(B_CONTROL_BACKGROUND_COLOR, 1.115); - else - SetLowUIColor(B_CONTROL_BACKGROUND_COLOR, 0.885); + SetLowUIColor(B_CONTROL_BACKGROUND_COLOR); SetHighUIColor(B_CONTROL_TEXT_COLOR); if (IsDefault()) diff --git a/src/kits/interface/ChannelSlider.cpp b/src/kits/interface/ChannelSlider.cpp index 76bcd2d1e3..c9aef70b34 100644 --- a/src/kits/interface/ChannelSlider.cpp +++ b/src/kits/interface/ChannelSlider.cpp @@ -611,7 +611,7 @@ BChannelSlider::DrawThumb(BView* into, int32 channel, BPoint where, rect.top = floorf(rect.top); rect.right = ceilf(rect.right + 0.5); rect.bottom = ceilf(rect.bottom + 0.5); - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color base = ui_color(B_CONTROL_BACKGROUND_COLOR); uint32 flags = 0; be_control_look->DrawSliderThumb(into, rect, rect, base, flags, Orientation()); diff --git a/src/kits/interface/HaikuControlLook.cpp b/src/kits/interface/HaikuControlLook.cpp index e1e5e29947..b3a42ec86c 100644 --- a/src/kits/interface/HaikuControlLook.cpp +++ b/src/kits/interface/HaikuControlLook.cpp @@ -28,8 +28,6 @@ namespace BPrivate { -static const float kEdgeBevelLightTint = 0.59; -static const float kEdgeBevelShadowTint = 1.0735; static const float kHoverTintFactor = 0.85; static const int32 kButtonPopUpIndicatorWidth = B_USE_ITEM_SPACING; @@ -2779,7 +2777,10 @@ HaikuControlLook::_DrawButtonBackground(BView* view, BRect& rect, && (flags & (B_ACTIVATED | B_PARTIALLY_ACTIVATED)) == 0 && ((flags & (B_HOVER | B_FOCUSED)) == 0 || (flags & B_DISABLED) != 0)) { - _DrawFlatButtonBackground(view, rect, updateRect, base, popupIndicator, + rgb_color flatBase = base; + if (view->Parent() != NULL) + flatBase = view->Parent()->LowColor(); + _DrawFlatButtonBackground(view, rect, updateRect, flatBase, popupIndicator, flags, borders, orientation); } else { BRegion clipping(rect); @@ -2829,12 +2830,12 @@ HaikuControlLook::_DrawNonFlatButtonBackground(BView* view, BRect& rect, rgb_color bevelLightColor = _BevelLightColor(base, flags); rgb_color bevelShadowColor = _BevelShadowColor(base, flags); - // button background color - rgb_color buttonBgColor; + // button corners color + rgb_color buttonCornerColor; if ((flags & B_DISABLED) != 0) - buttonBgColor = tint_color(base, 0.7); + buttonCornerColor = tint_color(base, 0.84 /* lighten "< 1" */); else - buttonBgColor = tint_color(base, B_LIGHTEN_1_TINT); + buttonCornerColor = tint_color(base, 0.7 /* lighten "< 1" */); // surface top gradient BGradientLinear fillGradient; @@ -2929,7 +2930,7 @@ HaikuControlLook::_DrawNonFlatButtonBackground(BView* view, BRect& rect, _DrawFrame(view, rect, bevelLightColor, bevelLightColor, bevelShadowColor, bevelShadowColor, - buttonBgColor, buttonBgColor, borders); + buttonCornerColor, buttonCornerColor, borders); } if (popupIndicator) { @@ -3679,7 +3680,7 @@ HaikuControlLook::_EdgeColor(const rgb_color& base, bool shadow, uint32 flags) edgeColor = (rgb_color){ value, value, value, alpha }; } else { - float tint = shadow ? kEdgeBevelShadowTint : kEdgeBevelLightTint; + float tint = shadow ? 1.0735 : 0.59; if ((flags & B_DEFAULT_BUTTON) != 0) { if ((flags & B_DISABLED) != 0) tint = B_NO_TINT + (tint - B_NO_TINT) * 0.3; @@ -3718,7 +3719,7 @@ HaikuControlLook::_FrameLightColor(const rgb_color& base, uint32 flags) if ((flags & B_BLEND_FRAME) != 0) frameLightColor = (rgb_color){ 0, 0, 0, 75 }; else - frameLightColor = tint_color(base, 1.33); + frameLightColor = tint_color(base, 1.35); if ((flags & B_DEFAULT_BUTTON) != 0) frameLightColor = tint_color(frameLightColor, 1.35); @@ -3741,7 +3742,7 @@ HaikuControlLook::_FrameShadowColor(const rgb_color& base, uint32 flags) if ((flags & B_DISABLED) != 0) { // TODO: B_BLEND_FRAME - frameShadowColor = tint_color(base, 1.24); + frameShadowColor = tint_color(base, 1.26); if ((flags & B_DEFAULT_BUTTON) != 0) { frameShadowColor = tint_color(base, 1.145); @@ -3759,7 +3760,7 @@ HaikuControlLook::_FrameShadowColor(const rgb_color& base, uint32 flags) if ((flags & B_BLEND_FRAME) != 0) frameShadowColor = (rgb_color){ 0, 0, 0, 95 }; else - frameShadowColor = tint_color(base, 1.47); + frameShadowColor = tint_color(base, 1.485); } } @@ -3770,13 +3771,14 @@ HaikuControlLook::_FrameShadowColor(const rgb_color& base, uint32 flags) rgb_color HaikuControlLook::_BevelLightColor(const rgb_color& base, uint32 flags) { - rgb_color bevelLightColor = tint_color(base, 0.2); - - if ((flags & B_DISABLED) != 0) - bevelLightColor = tint_color(base, B_LIGHTEN_1_TINT); + rgb_color bevelLightColor; if ((flags & B_ACTIVATED) != 0) - bevelLightColor = tint_color(base, B_DARKEN_1_TINT); + bevelLightColor = tint_color(base, 1.17); + else if ((flags & B_DISABLED) != 0) + bevelLightColor = tint_color(base, B_LIGHTEN_1_TINT); + else + bevelLightColor = tint_color(base, 0.2); return bevelLightColor; } @@ -3785,13 +3787,14 @@ HaikuControlLook::_BevelLightColor(const rgb_color& base, uint32 flags) rgb_color HaikuControlLook::_BevelShadowColor(const rgb_color& base, uint32 flags) { - rgb_color bevelShadowColor = tint_color(base, 1.08); - - if ((flags & B_DISABLED) != 0) - bevelShadowColor = base; + rgb_color bevelShadowColor; if ((flags & B_ACTIVATED) != 0) - bevelShadowColor = tint_color(base, B_DARKEN_1_TINT); + bevelShadowColor = tint_color(base, 1.17); + else if ((flags & B_DISABLED) != 0) + bevelShadowColor = base; + else + bevelShadowColor = tint_color(base, 1.105); return bevelShadowColor; } @@ -3857,14 +3860,14 @@ void HaikuControlLook::_MakeButtonGradient(BGradientLinear& gradient, BRect& rect, const rgb_color& base, uint32 flags, orientation orientation) const { - float topTint = 0.49; - float middleTint1 = 0.62; - float middleTint2 = 0.76; - float bottomTint = 0.90; + float topTint = 0.6; + float middleTint1 = 0.75; + float middleTint2 = 0.9; + float bottomTint = 1.01; if ((flags & B_ACTIVATED) != 0) { - topTint = 1.11; - bottomTint = 1.08; + topTint = 1.135; + bottomTint = 1.105; } if ((flags & B_DISABLED) != 0) { diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp index 025f5e5aa1..491d09da81 100644 --- a/src/kits/interface/InterfaceDefs.cpp +++ b/src/kits/interface/InterfaceDefs.cpp @@ -85,7 +85,7 @@ static const rgb_color _kDefaultColors[kColorWhichCount] = { {0, 0, 0, 255}, // B_PANEL_TEXT_COLOR {255, 255, 255, 255}, // B_DOCUMENT_BACKGROUND_COLOR {0, 0, 0, 255}, // B_DOCUMENT_TEXT_COLOR - {245, 245, 245, 255}, // B_CONTROL_BACKGROUND_COLOR + {222, 222, 222, 255}, // B_CONTROL_BACKGROUND_COLOR {0, 0, 0, 255}, // B_CONTROL_TEXT_COLOR {172, 172, 172, 255}, // B_CONTROL_BORDER_COLOR {102, 152, 203, 255}, // B_CONTROL_HIGHLIGHT_COLOR diff --git a/src/kits/interface/Slider.cpp b/src/kits/interface/Slider.cpp index b53a56a45c..6bac3bd6db 100644 --- a/src/kits/interface/Slider.cpp +++ b/src/kits/interface/Slider.cpp @@ -1593,7 +1593,7 @@ BSlider::_DrawBlockThumb() BRect frame = ThumbFrame(); BView* view = OffscreenView(); - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color base = ui_color(B_CONTROL_BACKGROUND_COLOR); uint32 flags = be_control_look->Flags(this); be_control_look->DrawSliderThumb(view, frame, frame, base, flags, fOrientation); @@ -1605,7 +1605,7 @@ BSlider::_DrawTriangleThumb() { BRect frame = ThumbFrame(); BView* view = OffscreenView(); - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color base = ui_color(B_CONTROL_BACKGROUND_COLOR); uint32 flags = be_control_look->Flags(this); be_control_look->DrawSliderTriangle(view, frame, frame, base, flags, fOrientation); diff --git a/src/preferences/appearance/ColorsView.cpp b/src/preferences/appearance/ColorsView.cpp index 0d8d2ada85..e9265c201d 100644 --- a/src/preferences/appearance/ColorsView.cpp +++ b/src/preferences/appearance/ColorsView.cpp @@ -336,15 +336,15 @@ ColorsView::_SetColor(color_which which, rgb_color color) const bool isDark = color.IsDark(); _SetOneColor(B_MENU_BACKGROUND_COLOR, color); - _SetOneColor(B_SCROLL_BAR_THUMB_COLOR, color); const rgb_color menuSelectedBackground = tint_color(color, isDark ? 0.8 /* lighten "< 1" */ : B_DARKEN_2_TINT); _SetOneColor(B_MENU_SELECTED_BACKGROUND_COLOR, menuSelectedBackground); - const rgb_color controlBackground = tint_color(color, isDark - ? 0.8 /* lighten "< 1" */ : 0.25 /* lighten "> 2" */); + const rgb_color controlBackground = tint_color(color, + 0.84 /* lighten "< 1" */); _SetOneColor(B_CONTROL_BACKGROUND_COLOR, controlBackground); + _SetOneColor(B_SCROLL_BAR_THUMB_COLOR, controlBackground); const rgb_color controlBorder = tint_color(color, isDark ? 0.4875 : 1.20 /* lighten/darken "1.5" */); diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index 13ad635b7b..544ad6f341 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -547,6 +547,17 @@ Desktop::Init() const_cast(fSettings->MenuInfo()).font_size = fontSize; } +#if 1 + // Migrate old default UI control color to the new one. + // TODO: Drop this after R1/beta6 is released! + if (fSettings->UIColor(B_CONTROL_BACKGROUND_COLOR) == make_color(245, 245, 245) + && fSettings->ControlLook().IsEmpty()) { + rgb_color newControlBackground = make_color(222, 222, 222); + fSettings->SetUIColor(B_CONTROL_BACKGROUND_COLOR, newControlBackground); + fSettings->SetUIColor(B_SCROLL_BAR_THUMB_COLOR, newControlBackground); + } +#endif + HWInterface()->SetDPMSMode(B_DPMS_ON); float brightness = fWorkspaces[0].StoredScreenConfiguration().Brightness(0);