diff --git a/headers/private/interface/AbstractSpinner.h b/headers/private/interface/AbstractSpinner.h index e822299d37..8326f48c7e 100644 --- a/headers/private/interface/AbstractSpinner.h +++ b/headers/private/interface/AbstractSpinner.h @@ -59,6 +59,7 @@ public: virtual void Draw(BRect updateRect); virtual void FrameResized(float width, float height); virtual void ValueChanged(); + virtual void MessageReceived(BMessage* message); virtual void Decrement() = 0; virtual void Increment() = 0; diff --git a/src/kits/interface/AbstractSpinner.cpp b/src/kits/interface/AbstractSpinner.cpp index f426b5e220..ecccc88e64 100644 --- a/src/kits/interface/AbstractSpinner.cpp +++ b/src/kits/interface/AbstractSpinner.cpp @@ -545,7 +545,6 @@ SpinnerTextView::AttachedToWindow() { fParent = static_cast(Parent()); - AdoptParentColors(); BTextView::AttachedToWindow(); } @@ -1069,6 +1068,16 @@ BAbstractSpinner::ValueChanged() } +void +BAbstractSpinner::MessageReceived(BMessage* message) +{ + if (!IsEnabled() && message->what == B_COLORS_UPDATED) + _UpdateTextViewColors(false); + + BControl::MessageReceived(message); +} + + void BAbstractSpinner::MakeFocus(bool focus) { @@ -1585,36 +1594,24 @@ BAbstractSpinner::_UpdateFrame() void BAbstractSpinner::_UpdateTextViewColors(bool enable) { - rgb_color textColor; - BFont font; - - fTextView->GetFontAndColor(0, &font); - - if (enable) - textColor = ui_color(B_DOCUMENT_TEXT_COLOR); - else { - textColor = tint_color(ui_color(B_PANEL_BACKGROUND_COLOR), - B_DISABLED_LABEL_TINT); - } - - fTextView->SetFontAndColor(&font, B_FONT_ALL, &textColor); + // Mimick BTextControl's appearance. + rgb_color textColor = ui_color(B_DOCUMENT_TEXT_COLOR); if (enable) { fTextView->SetViewUIColor(B_DOCUMENT_BACKGROUND_COLOR); fTextView->SetLowUIColor(ViewUIColor()); } else { - color_which which = ViewUIColor(); + rgb_color color = ui_color(B_DOCUMENT_BACKGROUND_COLOR); + color = disable_color(ViewColor(), color); + textColor = disable_color(textColor, ViewColor()); - if (which != B_NO_COLOR) { - fTextView->SetViewUIColor(which, B_LIGHTEN_2_TINT); - fTextView->SetLowUIColor(which, B_LIGHTEN_2_TINT); - } else { - rgb_color color = tint_color(ViewColor(), B_LIGHTEN_2_TINT); - fTextView->SetViewColor(color); - fTextView->SetLowColor(color); - } + fTextView->SetViewColor(color); + fTextView->SetLowColor(color); } + BFont font; + fTextView->GetFontAndColor(0, &font); + fTextView->SetFontAndColor(&font, B_FONT_ALL, &textColor); }