diff --git a/Base/res/themes/Default.ini b/Base/res/themes/Default.ini index 526ec3adbab..7a99dc20270 100644 --- a/Base/res/themes/Default.ini +++ b/Base/res/themes/Default.ini @@ -22,7 +22,10 @@ MenuStripe=#bbb7b0 MenuSelection=#ad714f Window=#d4d0c8 -Text=black +WindowText=black +Button=#d4d0c8 +ButtonText=black + Base=white ThreedHighlight=white diff --git a/Base/res/themes/Xmas.ini b/Base/res/themes/Xmas.ini index c11a1be78f2..5725aeab679 100644 --- a/Base/res/themes/Xmas.ini +++ b/Base/res/themes/Xmas.ini @@ -21,8 +21,11 @@ MenuBase=#57691f MenuStripe=#2b3018 MenuSelection=#ff8742 -Window=#d46c64 -Text=black +Window=#5a0103 +WindowText=white +Button=#d46c64 +ButtonText=black + Base=#d3d7c4 ThreedHighlight=#e69e99 diff --git a/Libraries/LibDraw/Color.cpp b/Libraries/LibDraw/Color.cpp index 4324ac440cc..9027f7fd666 100644 --- a/Libraries/LibDraw/Color.cpp +++ b/Libraries/LibDraw/Color.cpp @@ -11,8 +11,8 @@ Color::Color(SystemColor system_color) case SystemColor::Window: m_value = theme.window.value(); break; - case SystemColor::Text: - m_value = theme.text.value(); + case SystemColor::WindowText: + m_value = theme.window_text.value(); break; case SystemColor::Base: m_value = theme.base.value(); @@ -26,6 +26,12 @@ Color::Color(SystemColor system_color) case SystemColor::ThreedHighlight: m_value = theme.threed_highlight.value(); break; + case SystemColor::Button: + m_value = theme.button.value(); + break; + case SystemColor::ButtonText: + m_value = theme.button_text.value(); + break; case SystemColor::HoverHighlight: m_value = theme.hover_highlight.value(); break; diff --git a/Libraries/LibDraw/Color.h b/Libraries/LibDraw/Color.h index 677a01c24e5..2d10792299d 100644 --- a/Libraries/LibDraw/Color.h +++ b/Libraries/LibDraw/Color.h @@ -29,7 +29,9 @@ enum class SystemColor { MenuBase, MenuSelection, Window, - Text, + WindowText, + Button, + ButtonText, Base, ThreedHighlight, ThreedShadow1, diff --git a/Libraries/LibDraw/StylePainter.cpp b/Libraries/LibDraw/StylePainter.cpp index 62e4796c103..9b57a6bf38f 100644 --- a/Libraries/LibDraw/StylePainter.cpp +++ b/Libraries/LibDraw/StylePainter.cpp @@ -3,7 +3,7 @@ void StylePainter::paint_tab_button(Painter& painter, const Rect& rect, bool active, bool hovered, bool enabled) { - Color base_color = SystemColor::Window; + Color base_color = SystemColor::Button; Color highlight_color2 = SystemColor::ThreedHighlight; Color shadow_color1 = SystemColor::ThreedShadow1; Color shadow_color2 = SystemColor::ThreedShadow2; @@ -44,7 +44,7 @@ void StylePainter::paint_tab_button(Painter& painter, const Rect& rect, bool act static void paint_button_new(Painter& painter, const Rect& rect, bool pressed, bool checked, bool hovered, bool enabled) { - Color button_color = SystemColor::Window; + Color button_color = SystemColor::Button; Color highlight_color2 = SystemColor::ThreedHighlight; Color shadow_color1 = SystemColor::ThreedShadow1; Color shadow_color2 = SystemColor::ThreedShadow2; @@ -53,7 +53,7 @@ static void paint_button_new(Painter& painter, const Rect& rect, bool pressed, b if (hovered) button_color = SystemColor::HoverHighlight; else - button_color = SystemColor::Window; + button_color = SystemColor::Button; } else if (hovered && enabled) button_color = StylePainter::hover_highlight_color(); @@ -92,7 +92,7 @@ void StylePainter::paint_button(Painter& painter, const Rect& rect, ButtonStyle if (button_style == ButtonStyle::Normal) return paint_button_new(painter, rect, pressed, checked, hovered, enabled); - Color button_color = SystemColor::Window; + Color button_color = SystemColor::Button; Color highlight_color = Color::White; Color shadow_color = Color(96, 96, 96); @@ -129,8 +129,8 @@ void StylePainter::paint_button(Painter& painter, const Rect& rect, ButtonStyle void StylePainter::paint_surface(Painter& painter, const Rect& rect, bool paint_vertical_lines, bool paint_top_line) { - painter.fill_rect({ rect.x(), rect.y() + 1, rect.width(), rect.height() - 2 }, SystemColor::Window); - painter.draw_line(rect.top_left(), rect.top_right(), paint_top_line ? SystemColor::ThreedHighlight : SystemColor::Window); + painter.fill_rect({ rect.x(), rect.y() + 1, rect.width(), rect.height() - 2 }, SystemColor::Button); + painter.draw_line(rect.top_left(), rect.top_right(), paint_top_line ? SystemColor::ThreedHighlight : SystemColor::Button); painter.draw_line(rect.bottom_left(), rect.bottom_right(), SystemColor::ThreedShadow1); if (paint_vertical_lines) { painter.draw_line(rect.top_left().translated(0, 1), rect.bottom_left().translated(0, -1), SystemColor::ThreedHighlight); @@ -176,7 +176,7 @@ void StylePainter::paint_frame(Painter& painter, const Rect& rect, FrameShape sh Color top_left_color; Color bottom_right_color; Color dark_shade = SystemColor::ThreedShadow2; - Color light_shade = SystemColor::Window; + Color light_shade = SystemColor::Button; if (shadow == FrameShadow::Raised) { dark_shade = SystemColor::ThreedShadow1; top_left_color = light_shade; @@ -207,7 +207,7 @@ void StylePainter::paint_frame(Painter& painter, const Rect& rect, FrameShape sh void StylePainter::paint_window_frame(Painter& painter, const Rect& rect) { - Color base_color = SystemColor::Window; + Color base_color = SystemColor::Button; Color dark_shade = SystemColor::ThreedShadow2; Color mid_shade = SystemColor::ThreedShadow1; Color light_shade = SystemColor::ThreedHighlight; diff --git a/Libraries/LibDraw/SystemTheme.cpp b/Libraries/LibDraw/SystemTheme.cpp index c5e05e1ebd2..226df7cb536 100644 --- a/Libraries/LibDraw/SystemTheme.cpp +++ b/Libraries/LibDraw/SystemTheme.cpp @@ -47,8 +47,10 @@ RefPtr load_system_theme(const String& path) data->threed_shadow2 = get("ThreedShadow2"); data->hover_highlight = get("HoverHighlight"); data->window = get("Window"); - data->text = get("Text"); + data->window_text = get("WindowText"); data->base = get("Base"); + data->button = get("Button"); + data->button_text = get("ButtonText"); data->desktop_background = get("DesktopBackground"); data->active_window_border1 = get("ActiveWindowBorder1"); data->active_window_border2 = get("ActiveWindowBorder2"); diff --git a/Libraries/LibDraw/SystemTheme.h b/Libraries/LibDraw/SystemTheme.h index 2fa7a635b00..ab8d97f3a0d 100644 --- a/Libraries/LibDraw/SystemTheme.h +++ b/Libraries/LibDraw/SystemTheme.h @@ -28,8 +28,10 @@ struct SystemTheme { Color menu_selection; Color window; - Color text; + Color window_text; Color base; + Color button; + Color button_text; Color threed_highlight; Color threed_shadow1; diff --git a/Libraries/LibGUI/GAbstractButton.cpp b/Libraries/LibGUI/GAbstractButton.cpp index b9da470996a..ae3e14ec6cd 100644 --- a/Libraries/LibGUI/GAbstractButton.cpp +++ b/Libraries/LibGUI/GAbstractButton.cpp @@ -154,7 +154,7 @@ void GAbstractButton::paint_text(GPainter& painter, const Rect& rect, const Font if (text().is_empty()) return; - painter.draw_text(clipped_rect, text(), font, text_alignment, SystemColor::Text, TextElision::Right); + painter.draw_text(clipped_rect, text(), font, text_alignment, SystemColor::ButtonText, TextElision::Right); if (is_focused()) painter.draw_rect(clipped_rect.inflated(6, 4), Color(140, 140, 140)); } diff --git a/Libraries/LibGUI/GAbstractColumnView.cpp b/Libraries/LibGUI/GAbstractColumnView.cpp index 98ffcfff5a1..0c5578f7205 100644 --- a/Libraries/LibGUI/GAbstractColumnView.cpp +++ b/Libraries/LibGUI/GAbstractColumnView.cpp @@ -129,7 +129,7 @@ void GAbstractColumnView::paint_headers(GPainter& painter) auto text_rect = cell_rect.translated(horizontal_padding(), 0); if (pressed) text_rect.move_by(1, 1); - painter.draw_text(text_rect, text, header_font(), TextAlignment::CenterLeft, SystemColor::Text); + painter.draw_text(text_rect, text, header_font(), TextAlignment::CenterLeft, SystemColor::ButtonText); x_offset += column_width + horizontal_padding() * 2; } } diff --git a/Libraries/LibGUI/GCheckBox.cpp b/Libraries/LibGUI/GCheckBox.cpp index 46fd2a2b620..958e93a15c3 100644 --- a/Libraries/LibGUI/GCheckBox.cpp +++ b/Libraries/LibGUI/GCheckBox.cpp @@ -63,7 +63,7 @@ void GCheckBox::paint_event(GPaintEvent& event) if (is_checked()) { if (!s_checked_bitmap) s_checked_bitmap = &CharacterBitmap::create_from_ascii(s_checked_bitmap_data, s_checked_bitmap_width, s_checked_bitmap_height).leak_ref(); - painter.draw_bitmap(box_rect.shrunken(4, 4).location(), *s_checked_bitmap, SystemColor::Text); + painter.draw_bitmap(box_rect.shrunken(4, 4).location(), *s_checked_bitmap, SystemColor::ButtonText); } paint_text(painter, text_rect, font(), TextAlignment::TopLeft); diff --git a/Libraries/LibGUI/GItemView.cpp b/Libraries/LibGUI/GItemView.cpp index 183afb4e4b1..40912800b12 100644 --- a/Libraries/LibGUI/GItemView.cpp +++ b/Libraries/LibGUI/GItemView.cpp @@ -230,7 +230,7 @@ void GItemView::paint_event(GPaintEvent& event) if (is_selected_item) text_color = Color::White; else - text_color = model()->data(model_index, GModel::Role::ForegroundColor).to_color(SystemColor::Text); + text_color = model()->data(model_index, GModel::Role::ForegroundColor).to_color(SystemColor::WindowText); painter.fill_rect(text_rect, background_color); painter.draw_text(text_rect, item_text.to_string(), font, TextAlignment::Center, text_color, TextElision::Right); }; diff --git a/Libraries/LibGUI/GListView.cpp b/Libraries/LibGUI/GListView.cpp index 4476dc9404b..38224f14576 100644 --- a/Libraries/LibGUI/GListView.cpp +++ b/Libraries/LibGUI/GListView.cpp @@ -129,7 +129,7 @@ void GListView::paint_event(GPaintEvent& event) if (is_selected_row) text_color = Color::White; else - text_color = model()->data(index, GModel::Role::ForegroundColor).to_color(SystemColor::Text); + text_color = model()->data(index, GModel::Role::ForegroundColor).to_color(SystemColor::WindowText); auto text_rect = row_rect; text_rect.move_by(horizontal_padding(), 0); text_rect.set_width(text_rect.width() - horizontal_padding() * 2); diff --git a/Libraries/LibGUI/GResizeCorner.cpp b/Libraries/LibGUI/GResizeCorner.cpp index 7b01de78de4..6016422a6a5 100644 --- a/Libraries/LibGUI/GResizeCorner.cpp +++ b/Libraries/LibGUI/GResizeCorner.cpp @@ -20,7 +20,7 @@ void GResizeCorner::paint_event(GPaintEvent& event) { GPainter painter(*this); painter.add_clip_rect(event.rect()); - painter.fill_rect(rect(), SystemColor::Window); + painter.fill_rect(rect(), SystemColor::Button); painter.blit({ 0, 0 }, *m_bitmap, m_bitmap->rect()); GWidget::paint_event(event); } diff --git a/Libraries/LibGUI/GScrollBar.cpp b/Libraries/LibGUI/GScrollBar.cpp index c9826dd31f8..24eed4761b1 100644 --- a/Libraries/LibGUI/GScrollBar.cpp +++ b/Libraries/LibGUI/GScrollBar.cpp @@ -203,14 +203,14 @@ void GScrollBar::paint_event(GPaintEvent& event) GPainter painter(*this); painter.add_clip_rect(event.rect()); - painter.fill_rect(rect(), Color::from_rgb(0xd6d2ce)); + painter.fill_rect(rect(), Color(SystemColor::Button).lightened()); StylePainter::paint_button(painter, decrement_button_rect(), ButtonStyle::Normal, false, m_hovered_component == Component::DecrementButton); StylePainter::paint_button(painter, increment_button_rect(), ButtonStyle::Normal, false, m_hovered_component == Component::IncrementButton); if (length(orientation()) > default_button_size()) { - painter.draw_bitmap(decrement_button_rect().location().translated(3, 3), orientation() == Orientation::Vertical ? *s_up_arrow_bitmap : *s_left_arrow_bitmap, has_scrubber() ? SystemColor::Text : SystemColor::DisabledText); - painter.draw_bitmap(increment_button_rect().location().translated(3, 3), orientation() == Orientation::Vertical ? *s_down_arrow_bitmap : *s_right_arrow_bitmap, has_scrubber() ? SystemColor::Text : SystemColor::DisabledText); + painter.draw_bitmap(decrement_button_rect().location().translated(3, 3), orientation() == Orientation::Vertical ? *s_up_arrow_bitmap : *s_left_arrow_bitmap, has_scrubber() ? SystemColor::ButtonText : SystemColor::DisabledText); + painter.draw_bitmap(increment_button_rect().location().translated(3, 3), orientation() == Orientation::Vertical ? *s_down_arrow_bitmap : *s_right_arrow_bitmap, has_scrubber() ? SystemColor::ButtonText : SystemColor::DisabledText); } if (has_scrubber()) diff --git a/Libraries/LibGUI/GTableView.cpp b/Libraries/LibGUI/GTableView.cpp index 4ba0190b48c..f98d817e67b 100644 --- a/Libraries/LibGUI/GTableView.cpp +++ b/Libraries/LibGUI/GTableView.cpp @@ -95,7 +95,7 @@ void GTableView::paint_event(GPaintEvent& event) if (is_selected_row) text_color = Color::White; else - text_color = model()->data(cell_index, GModel::Role::ForegroundColor).to_color(SystemColor::Text); + text_color = model()->data(cell_index, GModel::Role::ForegroundColor).to_color(SystemColor::WindowText); painter.draw_text(cell_rect, data.to_string(), font, column_metadata.text_alignment, text_color, TextElision::Right); } } diff --git a/Libraries/LibGUI/GTreeView.cpp b/Libraries/LibGUI/GTreeView.cpp index 2c408b3f87a..f0e12b5386c 100644 --- a/Libraries/LibGUI/GTreeView.cpp +++ b/Libraries/LibGUI/GTreeView.cpp @@ -178,7 +178,7 @@ void GTreeView::paint_event(GPaintEvent& event) bool is_selected_row = selection().contains(index); - Color text_color = SystemColor::Text; + Color text_color = SystemColor::WindowText; if (is_selected_row) text_color = Color::White; @@ -226,7 +226,7 @@ void GTreeView::paint_event(GPaintEvent& event) painter.blit(cell_rect.location(), *bitmap, bitmap->rect()); } else { if (!is_selected_row) - text_color = model.data(cell_index, GModel::Role::ForegroundColor).to_color(SystemColor::Text); + text_color = model.data(cell_index, GModel::Role::ForegroundColor).to_color(SystemColor::WindowText); painter.draw_text(cell_rect, data.to_string(), font, column_metadata.text_alignment, text_color, TextElision::Right); } } diff --git a/Libraries/LibGUI/GWidget.cpp b/Libraries/LibGUI/GWidget.cpp index 66e926acb1b..e55ca522af4 100644 --- a/Libraries/LibGUI/GWidget.cpp +++ b/Libraries/LibGUI/GWidget.cpp @@ -69,7 +69,7 @@ GWidget::GWidget(GWidget* parent) , m_font(Font::default_font()) { m_background_color = SystemColor::Window; - m_foreground_color = SystemColor::Text; + m_foreground_color = SystemColor::WindowText; } GWidget::~GWidget() diff --git a/Servers/WindowServer/WSButton.cpp b/Servers/WindowServer/WSButton.cpp index 539ad3f52ff..f7d9970557d 100644 --- a/Servers/WindowServer/WSButton.cpp +++ b/Servers/WindowServer/WSButton.cpp @@ -25,7 +25,7 @@ void WSButton::paint(Painter& painter) x_location.move_by(-(m_bitmap->width() / 2), -(m_bitmap->height() / 2)); if (m_pressed) x_location.move_by(1, 1); - painter.draw_bitmap(x_location, *m_bitmap, SystemColor::Text); + painter.draw_bitmap(x_location, *m_bitmap, SystemColor::ButtonText); } void WSButton::on_mouse_event(const WSMouseEvent& event) diff --git a/Servers/WindowServer/WSMenu.cpp b/Servers/WindowServer/WSMenu.cpp index 46e1a3e35c1..f1bf9002591 100644 --- a/Servers/WindowServer/WSMenu.cpp +++ b/Servers/WindowServer/WSMenu.cpp @@ -153,7 +153,7 @@ void WSMenu::draw() for (auto& item : m_items) { if (item.type() == WSMenuItem::Text) { - Color text_color = Color::Black; + Color text_color = SystemColor::WindowText; if (&item == m_hovered_item && item.is_enabled()) { painter.fill_rect(item.rect(), SystemColor::MenuSelection); painter.draw_rect(item.rect(), Color(SystemColor::MenuSelection).darkened()); @@ -169,7 +169,7 @@ void WSMenu::draw() painter.fill_rect(checkbox_rect, SystemColor::Base); StylePainter::paint_frame(painter, checkbox_rect, FrameShape::Container, FrameShadow::Sunken, 2); if (item.is_checked()) { - painter.draw_bitmap(checkmark_rect.location(), *s_checked_bitmap, SystemColor::Text); + painter.draw_bitmap(checkmark_rect.location(), *s_checked_bitmap, SystemColor::ButtonText); } } else if (item.icon()) { Rect icon_rect { item.rect().x() + 3, 0, s_item_icon_width, s_item_icon_width }; @@ -189,13 +189,13 @@ void WSMenu::draw() s_submenu_arrow_bitmap_height }; submenu_arrow_rect.center_vertically_within(item.rect()); - painter.draw_bitmap(submenu_arrow_rect.location(), submenu_arrow_bitmap, Color::Black); + painter.draw_bitmap(submenu_arrow_rect.location(), submenu_arrow_bitmap, SystemColor::WindowText); } } else if (item.type() == WSMenuItem::Separator) { Point p1(item.rect().translated(stripe_rect.width() + 4, 0).x(), item.rect().center().y() - 1); Point p2(width - 7, item.rect().center().y() - 1); - painter.draw_line(p1, p2, Color::MidGray); - painter.draw_line(p1.translated(0, 1), p2.translated(0, 1), Color::White); + painter.draw_line(p1, p2, SystemColor::ThreedShadow1); + painter.draw_line(p1.translated(0, 1), p2.translated(0, 1), SystemColor::ThreedHighlight); } } } diff --git a/Servers/WindowServer/WSMenuManager.cpp b/Servers/WindowServer/WSMenuManager.cpp index 51a9f6e99ba..5db49f1f34e 100644 --- a/Servers/WindowServer/WSMenuManager.cpp +++ b/Servers/WindowServer/WSMenuManager.cpp @@ -87,7 +87,7 @@ void WSMenuManager::draw() painter.draw_line({ 0, menubar_rect.bottom() }, { menubar_rect.right(), menubar_rect.bottom() }, SystemColor::ThreedShadow1); int index = 0; wm.for_each_active_menubar_menu([&](WSMenu& menu) { - Color text_color = SystemColor::Text; + Color text_color = SystemColor::WindowText; if (is_open(menu)) { painter.fill_rect(menu.rect_in_menubar(), SystemColor::MenuSelection); painter.draw_rect(menu.rect_in_menubar(), Color(SystemColor::MenuSelection).darkened()); @@ -103,7 +103,7 @@ void WSMenuManager::draw() return IterationDecision::Continue; }); - painter.draw_text(m_username_rect, m_username, Font::default_bold_font(), TextAlignment::CenterRight, SystemColor::Text); + painter.draw_text(m_username_rect, m_username, Font::default_bold_font(), TextAlignment::CenterRight, SystemColor::WindowText); time_t now = time(nullptr); auto* tm = localtime(&now); @@ -115,7 +115,7 @@ void WSMenuManager::draw() tm->tm_min, tm->tm_sec); - painter.draw_text(m_time_rect, time_text, wm.font(), TextAlignment::CenterRight, SystemColor::Text); + painter.draw_text(m_time_rect, time_text, wm.font(), TextAlignment::CenterRight, SystemColor::WindowText); for (auto& applet : m_applets) { if (!applet) diff --git a/Servers/WindowServer/WSWindowFrame.cpp b/Servers/WindowServer/WSWindowFrame.cpp index 44853d3ec1f..2d8755772fb 100644 --- a/Servers/WindowServer/WSWindowFrame.cpp +++ b/Servers/WindowServer/WSWindowFrame.cpp @@ -192,7 +192,7 @@ void WSWindowFrame::paint(Painter& painter) if (!window.show_titlebar()) return; - painter.draw_line(titlebar_rect.bottom_left().translated(0, 1), titlebar_rect.bottom_right().translated(0, 1), Color::WarmGray); + painter.draw_line(titlebar_rect.bottom_left().translated(0, 1), titlebar_rect.bottom_right().translated(0, 1), SystemColor::Button); auto leftmost_button_rect = m_buttons.is_empty() ? Rect() : m_buttons.last().relative_rect();