diff --git a/src/preferences/appearance/ColorsView.cpp b/src/preferences/appearance/ColorsView.cpp index b640c59414..625c3e6d07 100644 --- a/src/preferences/appearance/ColorsView.cpp +++ b/src/preferences/appearance/ColorsView.cpp @@ -310,10 +310,13 @@ ColorsView::_SetColor(int32 index, rgb_color color) void ColorsView::_SetColor(color_which which, rgb_color color) { - _SetOneColor(which, color); + fCurrentColors.SetColor(ui_color_name(which), color); - if (!fAutoSelectCheckBox->Value()) + if (!fAutoSelectCheckBox->Value()) { + if (ui_color(which) != color) + set_ui_color(which, color); return; + } // Protect against accidentally overwriting colors. if (ui_color(which) == color) @@ -322,31 +325,35 @@ ColorsView::_SetColor(color_which which, rgb_color color) if (which == B_PANEL_BACKGROUND_COLOR) { const bool isDark = color.IsDark(); - _SetOneColor(B_MENU_BACKGROUND_COLOR, color); + fCurrentColors.SetColor(ui_color_name(B_MENU_BACKGROUND_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); + fCurrentColors.SetColor(ui_color_name(B_MENU_SELECTED_BACKGROUND_COLOR), + menuSelectedBackground); const rgb_color controlBackground = tint_color(color, 0.84 /* lighten "< 1" */); - _SetOneColor(B_CONTROL_BACKGROUND_COLOR, controlBackground); - _SetOneColor(B_SCROLL_BAR_THUMB_COLOR, controlBackground); + fCurrentColors.SetColor(ui_color_name(B_CONTROL_BACKGROUND_COLOR), controlBackground); + fCurrentColors.SetColor(ui_color_name(B_SCROLL_BAR_THUMB_COLOR), controlBackground); const rgb_color controlBorder = tint_color(color, isDark ? 0.4875 : 1.20 /* lighten/darken "1.5" */); - _SetOneColor(B_CONTROL_BORDER_COLOR, controlBorder); + fCurrentColors.SetColor(ui_color_name(B_CONTROL_BORDER_COLOR), controlBorder); const rgb_color windowBorder = tint_color(color, 0.75); - _SetOneColor(B_WINDOW_BORDER_COLOR, windowBorder); + fCurrentColors.SetColor(ui_color_name(B_WINDOW_BORDER_COLOR), windowBorder); const rgb_color inactiveWindowBorder = tint_color(color, B_LIGHTEN_1_TINT); - _SetOneColor(B_WINDOW_INACTIVE_TAB_COLOR, inactiveWindowBorder); - _SetOneColor(B_WINDOW_INACTIVE_BORDER_COLOR, inactiveWindowBorder); + fCurrentColors.SetColor(ui_color_name(B_WINDOW_INACTIVE_TAB_COLOR), + inactiveWindowBorder); + fCurrentColors.SetColor(ui_color_name(B_WINDOW_INACTIVE_BORDER_COLOR), + inactiveWindowBorder); const rgb_color listSelectedBackground = tint_color(color, isDark ? 0.77 : 1.12 /* lighten/darken "< 1" */ ); - _SetOneColor(B_LIST_SELECTED_BACKGROUND_COLOR, listSelectedBackground); + fCurrentColors.SetColor(ui_color_name(B_LIST_SELECTED_BACKGROUND_COLOR), + listSelectedBackground); const color_which fromDefaults[] = { B_MENU_ITEM_TEXT_COLOR, @@ -371,18 +378,20 @@ ColorsView::_SetColor(color_which which, rgb_color color) B_LINK_VISITED_COLOR, }; for (size_t i = 0; i < B_COUNT_OF(fromDefaults); i++) - _SetOneColor(fromDefaults[i], BPrivate::GetSystemColor(fromDefaults[i], isDark)); + fCurrentColors.SetColor(ui_color_name(fromDefaults[i]) + , BPrivate::GetSystemColor(fromDefaults[i], isDark)); } else if (which == B_STATUS_BAR_COLOR) { const hsl_color statusColorHSL = hsl_color::from_rgb(color); hsl_color controlHighlight = statusColorHSL; controlHighlight.saturation = max_c(0.2f, controlHighlight.saturation / 2.f); - _SetOneColor(B_CONTROL_HIGHLIGHT_COLOR, controlHighlight.to_rgb()); + fCurrentColors.SetColor(ui_color_name(B_CONTROL_HIGHLIGHT_COLOR) + , controlHighlight.to_rgb()); hsl_color controlMark = statusColorHSL; controlMark.saturation = max_c(0.2f, controlMark.saturation * 0.67f); controlMark.lightness = max_c(0.25f, controlMark.lightness * 0.55f); - _SetOneColor(B_CONTROL_MARK_COLOR, controlMark.to_rgb()); + fCurrentColors.SetColor(ui_color_name(B_CONTROL_MARK_COLOR), controlMark.to_rgb()); rgb_color keyboardNav; { hsl_color keyboardNavHSL = statusColorHSL; @@ -397,38 +406,28 @@ ColorsView::_SetColor(color_which which, rgb_color color) else keyboardNav.red = keyboardNav.blue = 0; } - _SetOneColor(B_KEYBOARD_NAVIGATION_COLOR, keyboardNav); + fCurrentColors.SetColor(ui_color_name(B_KEYBOARD_NAVIGATION_COLOR), keyboardNav); } else if (which == B_WINDOW_TAB_COLOR) { const bool isDark = color.IsDark(); const hsl_color tabColorHSL = hsl_color::from_rgb(color); const float tabColorSaturation = tabColorHSL.saturation != 0 ? tabColorHSL.saturation : tabColorHSL.lightness; - _SetOneColor(B_WINDOW_TEXT_COLOR, + fCurrentColors.SetColor(ui_color_name(B_WINDOW_TEXT_COLOR), BPrivate::GetSystemColor(B_WINDOW_TEXT_COLOR, isDark)); - _SetOneColor(B_TOOL_TIP_TEXT_COLOR, + fCurrentColors.SetColor(ui_color_name(B_TOOL_TIP_TEXT_COLOR), BPrivate::GetSystemColor(B_TOOL_TIP_TEXT_COLOR, isDark)); const rgb_color toolTipBackground = tint_color(color, isDark ? 1.7 : 0.15); - _SetOneColor(B_TOOL_TIP_BACKGROUND_COLOR, toolTipBackground); + fCurrentColors.SetColor(ui_color_name(B_TOOL_TIP_BACKGROUND_COLOR), toolTipBackground); hsl_color success = hsl_color::from_rgb(BPrivate::GetSystemColor(B_SUCCESS_COLOR, isDark)); success.saturation = max_c(0.25f, tabColorSaturation * 0.68f); - _SetOneColor(B_SUCCESS_COLOR, success.to_rgb()); + fCurrentColors.SetColor(ui_color_name(B_SUCCESS_COLOR), success.to_rgb()); hsl_color failure = hsl_color::from_rgb(BPrivate::GetSystemColor(B_FAILURE_COLOR, isDark)); failure.saturation = max_c(0.25f, tabColorSaturation); - _SetOneColor(B_FAILURE_COLOR, failure.to_rgb()); + fCurrentColors.SetColor(ui_color_name(B_FAILURE_COLOR), failure.to_rgb()); } -} - - -void -ColorsView::_SetOneColor(color_which which, rgb_color color) -{ - if (ui_color(which) == color) - return; - - set_ui_color(which, color); - fCurrentColors.SetColor(ui_color_name(which), color); + set_ui_colors(&fCurrentColors); } diff --git a/src/preferences/appearance/ColorsView.h b/src/preferences/appearance/ColorsView.h index e4e4afc638..4e071e8c9f 100644 --- a/src/preferences/appearance/ColorsView.h +++ b/src/preferences/appearance/ColorsView.h @@ -54,7 +54,6 @@ private: void _SetColor(int32 index, rgb_color color); void _SetColor(color_which which, rgb_color color); - void _SetOneColor(color_which which, rgb_color color); void _SetCurrentColor(rgb_color color); void _SetUIColors(const BMessage& colors);