diff --git a/headers/os/interface/ControlLook.h b/headers/os/interface/ControlLook.h index ea8c5a645a..f7df29e478 100644 --- a/headers/os/interface/ControlLook.h +++ b/headers/os/interface/ControlLook.h @@ -71,6 +71,7 @@ public: virtual void DrawButtonFrame(BView* view, BRect& rect, const BRect& updateRect, const rgb_color& base, + const rgb_color& background, uint32 flags = 0, uint32 borders = B_ALL_BORDERS); @@ -91,6 +92,7 @@ public: virtual void DrawMenuFieldFrame(BView* view, BRect& rect, const BRect& updateRect, const rgb_color& base, + const rgb_color& background, uint32 flags = 0, uint32 borders = B_ALL_BORDERS); @@ -242,6 +244,7 @@ protected: void _DrawButtonFrame(BView* view, BRect& rect, const BRect& updateRect, const rgb_color& base, + const rgb_color& background, float contrast, float brightness = 1.0, uint32 flags = 0, uint32 borders = B_ALL_BORDERS); diff --git a/src/apps/launchbox/IconButton.cpp b/src/apps/launchbox/IconButton.cpp index 93ffd2e47d..ae21bdfd6a 100644 --- a/src/apps/launchbox/IconButton.cpp +++ b/src/apps/launchbox/IconButton.cpp @@ -95,7 +95,8 @@ IconButton::Draw(BRect area) flags |= BControlLook::B_ACTIVATED; if (DrawBorder()) { - be_control_look->DrawButtonFrame(this, r, area, background, flags); + be_control_look->DrawButtonFrame(this, r, area, background, + background, flags); be_control_look->DrawButtonBackground(this, r, area, background, flags); } else { diff --git a/src/kits/interface/BMCPrivate.cpp b/src/kits/interface/BMCPrivate.cpp index dc7a5416a6..ecdea82389 100644 --- a/src/kits/interface/BMCPrivate.cpp +++ b/src/kits/interface/BMCPrivate.cpp @@ -129,6 +129,11 @@ _BMCMenuBar_::AttachedToWindow() if (fFixedSize && (Flags() & B_SUPPORTS_LAYOUT) == 0) SetResizingMode(B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP); + + if (Parent() != NULL) + SetLowColor(Parent()->LowColor()); + else + SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); } diff --git a/src/kits/interface/Button.cpp b/src/kits/interface/Button.cpp index b4d0589adf..6964e8a21a 100644 --- a/src/kits/interface/Button.cpp +++ b/src/kits/interface/Button.cpp @@ -105,12 +105,17 @@ BButton::Draw(BRect updateRect) { if (be_control_look != NULL) { BRect rect(Bounds()); + rgb_color background = B_TRANSPARENT_COLOR; + if (Parent()) + background = Parent()->ViewColor(); + if (background == B_TRANSPARENT_COLOR) + background = ui_color(B_PANEL_BACKGROUND_COLOR); rgb_color base = LowColor(); uint32 flags = be_control_look->Flags(this); if (IsDefault()) flags |= BControlLook::B_DEFAULT_BUTTON; be_control_look->DrawButtonFrame(this, rect, updateRect, - base, flags); + base, background, flags); be_control_look->DrawButtonBackground(this, rect, updateRect, base, flags); diff --git a/src/kits/interface/ControlLook.cpp b/src/kits/interface/ControlLook.cpp index 6476ed7b51..851ebf8c0a 100644 --- a/src/kits/interface/ControlLook.cpp +++ b/src/kits/interface/ControlLook.cpp @@ -66,9 +66,11 @@ BControlLook::Flags(BControl* control) const void BControlLook::DrawButtonFrame(BView* view, BRect& rect, const BRect& updateRect, - const rgb_color& base, uint32 flags, uint32 borders) + const rgb_color& base, const rgb_color& background, uint32 flags, + uint32 borders) { - _DrawButtonFrame(view, rect, updateRect, base, 1.0, 1.0, flags, borders); + _DrawButtonFrame(view, rect, updateRect, base, background, 1.0, 1.0, flags, + borders); } @@ -220,10 +222,12 @@ BControlLook::DrawMenuBarBackground(BView* view, BRect& rect, void -BControlLook::DrawMenuFieldFrame(BView* view, BRect& rect, const BRect& updateRect, - const rgb_color& base, uint32 flags, uint32 borders) +BControlLook::DrawMenuFieldFrame(BView* view, BRect& rect, + const BRect& updateRect, const rgb_color& base, + const rgb_color& background, uint32 flags, uint32 borders) { - _DrawButtonFrame(view, rect, updateRect, base, 0.6, 1.0, flags, borders); + _DrawButtonFrame(view, rect, updateRect, base, background, 0.6, 1.0, flags, + borders); } @@ -1606,7 +1610,7 @@ BControlLook::DrawLabel(BView* view, const char* label, BRect rect, void BControlLook::_DrawButtonFrame(BView* view, BRect& rect, - const BRect& updateRect, const rgb_color& base, + const BRect& updateRect, const rgb_color& base, const rgb_color& background, float contrast, float brightness, uint32 flags, uint32 borders) { // colors @@ -1667,7 +1671,7 @@ BControlLook::_DrawButtonFrame(BView* view, BRect& rect, borders); } else { // bevel around external border - _DrawOuterResessedFrame(view, rect, base, + _DrawOuterResessedFrame(view, rect, background, contrast * ((flags & B_DISABLED) ? 0.0 : 1.0), brightness * 1.0, borders); } diff --git a/src/kits/interface/MenuField.cpp b/src/kits/interface/MenuField.cpp index 8abcbc5a64..4bf8b24735 100644 --- a/src/kits/interface/MenuField.cpp +++ b/src/kits/interface/MenuField.cpp @@ -269,13 +269,15 @@ BMenuField::Draw(BRect update) if (be_control_look != NULL) { frame.InsetBy(-kVMargin, -kVMargin); - rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR); + rgb_color base = fMenuBar->LowColor(); + rgb_color background = LowColor(); uint32 flags = 0; if (!fMenuBar->IsEnabled()) flags |= BControlLook::B_DISABLED; if (active) flags |= BControlLook::B_FOCUSED; - be_control_look->DrawMenuFieldFrame(this, frame, update, base, flags); + be_control_look->DrawMenuFieldFrame(this, frame, update, base, + background, flags); return; } diff --git a/src/preferences/keymap/KeyboardLayoutView.cpp b/src/preferences/keymap/KeyboardLayoutView.cpp index ad93402ef4..9effa91277 100644 --- a/src/preferences/keymap/KeyboardLayoutView.cpp +++ b/src/preferences/keymap/KeyboardLayoutView.cpp @@ -275,6 +275,7 @@ KeyboardLayoutView::Draw(BRect updateRect) rect.left += rect.Width() / 4; rect.right -= rect.Width() / 3; + rgb_color background = ui_color(B_PANEL_BACKGROUND_COLOR); rgb_color base; if ((fModifiers & indicator->modifier) != 0) base = kLitIndicatorColor; @@ -282,7 +283,7 @@ KeyboardLayoutView::Draw(BRect updateRect) base = kDarkColor; be_control_look->DrawButtonFrame(this, rect, updateRect, base, - BControlLook::B_DISABLED); + background, BControlLook::B_DISABLED); be_control_look->DrawButtonBackground(this, rect, updateRect, base, BControlLook::B_DISABLED); } @@ -378,10 +379,10 @@ KeyboardLayoutView::_LayoutKeyboard() void KeyboardLayoutView::_DrawKeyButton(BView* view, BRect rect, BRect updateRect, - rgb_color base, bool pressed) + rgb_color base, rgb_color background, bool pressed) { be_control_look->DrawButtonFrame(view, rect, updateRect, base, - pressed ? BControlLook::B_ACTIVATED : 0); + background, pressed ? BControlLook::B_ACTIVATED : 0); be_control_look->DrawButtonBackground(view, rect, updateRect, base, pressed ? BControlLook::B_ACTIVATED : 0); } @@ -392,6 +393,7 @@ KeyboardLayoutView::_DrawKey(BView* view, BRect updateRect, const Key* key, BRect rect, bool pressed) { rgb_color base = key->dark ? kDarkColor : kBrightColor; + rgb_color background = ui_color(B_PANEL_BACKGROUND_COLOR); key_kind keyKind = kNormalKey; int32 deadKey = 0; bool secondDeadKey = false; @@ -415,7 +417,7 @@ KeyboardLayoutView::_DrawKey(BView* view, BRect updateRect, const Key* key, base = kDeadKeyColor; if (key->shape == kRectangleKeyShape) { - _DrawKeyButton(view, rect, updateRect, base, pressed); + _DrawKeyButton(view, rect, updateRect, base, background, pressed); rect.InsetBy(1, 1); @@ -434,7 +436,7 @@ KeyboardLayoutView::_DrawKey(BView* view, BRect updateRect, const Key* key, region.Exclude(missingRect); ConstrainClippingRegion(®ion); - _DrawKeyButton(view, rect, updateRect, base, pressed); + _DrawKeyButton(view, rect, updateRect, base, background, pressed); rect.left = missingRect.right; be_control_look->DrawLabel(view, text, rect, updateRect, @@ -447,7 +449,7 @@ KeyboardLayoutView::_DrawKey(BView* view, BRect updateRect, const Key* key, rect = originalRect; rect.bottom = missingRect.top + 2; - _DrawKeyButton(view, rect, updateRect, base, pressed); + _DrawKeyButton(view, rect, updateRect, base, background, pressed); missingRect.left = missingRect.right; missingRect.right++; @@ -458,7 +460,7 @@ KeyboardLayoutView::_DrawKey(BView* view, BRect updateRect, const Key* key, rect = originalRect; rect.left = missingRect.right - 2; rect.top = missingRect.top - 2; - _DrawKeyButton(view, rect, updateRect, base, pressed); + _DrawKeyButton(view, rect, updateRect, base, background, pressed); ConstrainClippingRegion(NULL); } diff --git a/src/preferences/keymap/KeyboardLayoutView.h b/src/preferences/keymap/KeyboardLayoutView.h index f01539ec67..43a65b9b07 100644 --- a/src/preferences/keymap/KeyboardLayoutView.h +++ b/src/preferences/keymap/KeyboardLayoutView.h @@ -52,7 +52,8 @@ private: void _LayoutKeyboard(); void _DrawKeyButton(BView* view, BRect rect, - BRect updateRect, rgb_color base, bool pressed); + BRect updateRect, rgb_color base, + rgb_color background, bool pressed); void _DrawKey(BView* view, BRect updateRect, const Key* key, BRect frame, bool pressed); const char* _SpecialKeyLabel(const key_map& map, uint32 code);