diff --git a/Base/res/themes/Basalt.ini b/Base/res/themes/Basalt.ini index 237713902f..8b83a71fc2 100644 --- a/Base/res/themes/Basalt.ini +++ b/Base/res/themes/Basalt.ini @@ -3,17 +3,23 @@ DesktopBackground=#171717 ActiveWindowBorder1=black ActiveWindowBorder2=#1f1f1f ActiveWindowTitle=white +ActiveWindowTitleShadow=#00000000 +ActiveWindowTitleStripes=#00000000 InactiveWindowBorder1=#171717 InactiveWindowBorder2=#1f1f1f InactiveWindowTitle=#aaaaaa +InactiveWindowTitleShadow=#00000000 +InactiveWindowTitleStripes=#00000000 MovingWindowBorder1=black MovingWindowBorder2=#2f1f1f MovingWindowTitle=white +MovingWindowTitleShadow=#00000000 +MovingWindowTitleStripes=#00000000 HighlightWindowBorder1=black HighlightWindowBorder2=#3f2f0f HighlightWindowTitle=white -WindowTitleShadow=#00000000 -WindowTitleStripes=#00000000 +HighlightWindowTitleShadow=#00000000 +HighlightWindowTitleStripes=#00000000 MenuBase=#1f1f1f MenuBaseText=white MenuStripe=#171717 diff --git a/Base/res/themes/Default.ini b/Base/res/themes/Default.ini index 4281581667..36e8dbd526 100644 --- a/Base/res/themes/Default.ini +++ b/Base/res/themes/Default.ini @@ -3,17 +3,23 @@ DesktopBackground=#505050 ActiveWindowBorder1=#6e2209 ActiveWindowBorder2=#f4ca9e ActiveWindowTitle=white +ActiveWindowTitleShadow=#421405 +ActiveWindowTitleStripes=#6e2209 InactiveWindowBorder1=#808080 InactiveWindowBorder2=#c0c0c0 InactiveWindowTitle=#d5d0c7 +InactiveWindowTitleShadow=#4c4c4c +InactiveWindowTitleStripes=#808080 MovingWindowBorder1=#a1320d MovingWindowBorder2=#fadcbb MovingWindowTitle=white +MovingWindowTitleShadow=#601e07 +MovingWindowTitleStripes=#a1320d HighlightWindowBorder1=#a10d0d HighlightWindowBorder2=#fabbbb HighlightWindowTitle=white -WindowTitleShadow=#421405 -WindowTitleStripes=#6e2209 +HighlightWindowTitleShadow=#600707 +HighlightWindowTitleStripes=#a10d0d MenuBase=white MenuBaseText=black MenuStripe=#bbb7b0 diff --git a/Libraries/LibGfx/Palette.h b/Libraries/LibGfx/Palette.h index 6dc43e431d..dc28a17f9d 100644 --- a/Libraries/LibGfx/Palette.h +++ b/Libraries/LibGfx/Palette.h @@ -72,17 +72,23 @@ public: Color active_window_border1() const { return color(ColorRole::ActiveWindowBorder1); } Color active_window_border2() const { return color(ColorRole::ActiveWindowBorder2); } Color active_window_title() const { return color(ColorRole::ActiveWindowTitle); } + Color active_window_title_stripes() const { return color(ColorRole::ActiveWindowTitleStripes); } + Color active_window_title_shadow() const { return color(ColorRole::ActiveWindowTitleShadow); } Color inactive_window_border1() const { return color(ColorRole::InactiveWindowBorder1); } Color inactive_window_border2() const { return color(ColorRole::InactiveWindowBorder2); } Color inactive_window_title() const { return color(ColorRole::InactiveWindowTitle); } + Color inactive_window_title_stripes() const { return color(ColorRole::InactiveWindowTitleStripes); } + Color inactive_window_title_shadow() const { return color(ColorRole::InactiveWindowTitleShadow); } Color moving_window_border1() const { return color(ColorRole::MovingWindowBorder1); } Color moving_window_border2() const { return color(ColorRole::MovingWindowBorder2); } Color moving_window_title() const { return color(ColorRole::MovingWindowTitle); } + Color moving_window_title_stripes() const { return color(ColorRole::MovingWindowTitleStripes); } + Color moving_window_title_shadow() const { return color(ColorRole::MovingWindowTitleShadow); } Color highlight_window_border1() const { return color(ColorRole::HighlightWindowBorder1); } Color highlight_window_border2() const { return color(ColorRole::HighlightWindowBorder2); } Color highlight_window_title() const { return color(ColorRole::HighlightWindowTitle); } - Color window_title_stripes() const { return color(ColorRole::WindowTitleStripes); } - Color window_title_shadow() const { return color(ColorRole::WindowTitleShadow); } + Color highlight_window_title_stripes() const { return color(ColorRole::HighlightWindowTitleStripes); } + Color highlight_window_title_shadow() const { return color(ColorRole::HighlightWindowTitleShadow); } Color menu_stripe() const { return color(ColorRole::MenuStripe); } Color menu_base() const { return color(ColorRole::MenuBase); } Color menu_base_text() const { return color(ColorRole::MenuBaseText); } diff --git a/Libraries/LibGfx/SystemTheme.cpp b/Libraries/LibGfx/SystemTheme.cpp index 35ccf43c0e..9edeadae25 100644 --- a/Libraries/LibGfx/SystemTheme.cpp +++ b/Libraries/LibGfx/SystemTheme.cpp @@ -120,17 +120,23 @@ RefPtr load_system_theme(const String& path) DO_COLOR(ActiveWindowBorder1); DO_COLOR(ActiveWindowBorder2); DO_COLOR(ActiveWindowTitle); + DO_COLOR(ActiveWindowTitleShadow); + DO_COLOR(ActiveWindowTitleStripes); DO_COLOR(InactiveWindowBorder1); DO_COLOR(InactiveWindowBorder2); DO_COLOR(InactiveWindowTitle); + DO_COLOR(InactiveWindowTitleShadow); + DO_COLOR(InactiveWindowTitleStripes); DO_COLOR(MovingWindowBorder1); DO_COLOR(MovingWindowBorder2); DO_COLOR(MovingWindowTitle); + DO_COLOR(MovingWindowTitleShadow); + DO_COLOR(MovingWindowTitleStripes); DO_COLOR(HighlightWindowBorder1); DO_COLOR(HighlightWindowBorder2); DO_COLOR(HighlightWindowTitle); - DO_COLOR(WindowTitleShadow); - DO_COLOR(WindowTitleStripes); + DO_COLOR(HighlightWindowTitleShadow); + DO_COLOR(HighlightWindowTitleStripes); DO_COLOR(MenuStripe); DO_COLOR(MenuBase); DO_COLOR(MenuBaseText); diff --git a/Libraries/LibGfx/SystemTheme.h b/Libraries/LibGfx/SystemTheme.h index 244de1a54d..bd8131f0e5 100644 --- a/Libraries/LibGfx/SystemTheme.h +++ b/Libraries/LibGfx/SystemTheme.h @@ -39,17 +39,23 @@ enum class ColorRole { ActiveWindowBorder1, ActiveWindowBorder2, ActiveWindowTitle, + ActiveWindowTitleShadow, + ActiveWindowTitleStripes, InactiveWindowBorder1, InactiveWindowBorder2, InactiveWindowTitle, + InactiveWindowTitleShadow, + InactiveWindowTitleStripes, MovingWindowBorder1, MovingWindowBorder2, MovingWindowTitle, + MovingWindowTitleShadow, + MovingWindowTitleStripes, HighlightWindowBorder1, HighlightWindowBorder2, HighlightWindowTitle, - WindowTitleShadow, - WindowTitleStripes, + HighlightWindowTitleStripes, + HighlightWindowTitleShadow, MenuStripe, MenuBase, MenuBaseText, diff --git a/Services/WindowServer/WindowFrame.cpp b/Services/WindowServer/WindowFrame.cpp index 58efa91240..9ef0567530 100644 --- a/Services/WindowServer/WindowFrame.cpp +++ b/Services/WindowServer/WindowFrame.cpp @@ -170,12 +170,12 @@ WindowFrame::FrameColors WindowFrame::compute_frame_colors() const auto& wm = WindowManager::the(); auto palette = wm.palette(); if (&m_window == wm.m_highlight_window) - return { palette.highlight_window_title(), palette.highlight_window_border1(), palette.highlight_window_border2() }; + return { palette.highlight_window_title(), palette.highlight_window_border1(), palette.highlight_window_border2(), palette.highlight_window_title_stripes(), palette.highlight_window_title_shadow() }; if (&m_window == wm.m_move_window) - return { palette.moving_window_title(), palette.moving_window_border1(), palette.moving_window_border2() }; + return { palette.moving_window_title(), palette.moving_window_border1(), palette.moving_window_border2(), palette.moving_window_title_stripes(), palette.moving_window_title_shadow() }; if (wm.is_active_window_or_accessory(m_window)) - return { palette.active_window_title(), palette.active_window_border1(), palette.active_window_border2() }; - return { palette.inactive_window_title(), palette.inactive_window_border1(), palette.inactive_window_border2() }; + return { palette.active_window_title(), palette.active_window_border1(), palette.active_window_border2(), palette.active_window_title_stripes(), palette.active_window_title_shadow() }; + return { palette.inactive_window_title(), palette.inactive_window_border1(), palette.inactive_window_border2(), palette.inactive_window_title_stripes(), palette.inactive_window_title_shadow() }; } void WindowFrame::paint_notification_frame(Gfx::Painter& painter) @@ -192,7 +192,7 @@ void WindowFrame::paint_notification_frame(Gfx::Painter& painter) int stripe_bottom = m_window.height() - 3; if (stripe_top && stripe_bottom && stripe_top < stripe_bottom) { for (int i = 2; i <= palette.window_title_height() - 2; i += 2) { - painter.draw_line({ titlebar_rect.x() + i, stripe_top }, { titlebar_rect.x() + i, stripe_bottom }, palette.window_title_stripes()); + painter.draw_line({ titlebar_rect.x() + i, stripe_top }, { titlebar_rect.x() + i, stripe_bottom }, palette.active_window_title_stripes()); } } } @@ -220,7 +220,7 @@ void WindowFrame::paint_normal_frame(Gfx::Painter& painter) auto titlebar_title_rect = titlebar_inner_rect; titlebar_title_rect.set_width(WindowManager::the().window_title_font().width(title_text)); - auto [title_color, border_color, border_color2] = compute_frame_colors(); + auto [title_color, border_color, border_color2, stripes_color, shadow_color] = compute_frame_colors(); auto& wm = WindowManager::the(); painter.draw_line(titlebar_rect.bottom_left().translated(0, 1), titlebar_rect.bottom_right().translated(0, 1), palette.button()); @@ -234,14 +234,14 @@ void WindowFrame::paint_normal_frame(Gfx::Painter& painter) int stripe_right = leftmost_button_rect.left() - 3; if (stripe_left && stripe_right && stripe_left < stripe_right) { for (int i = 2; i <= titlebar_inner_rect.height() - 2; i += 2) { - painter.draw_line({ stripe_left, titlebar_inner_rect.y() + i }, { stripe_right, titlebar_inner_rect.y() + i }, palette.window_title_stripes()); + painter.draw_line({ stripe_left, titlebar_inner_rect.y() + i }, { stripe_right, titlebar_inner_rect.y() + i }, stripes_color); } } auto clipped_title_rect = titlebar_title_rect; clipped_title_rect.set_width(stripe_right - clipped_title_rect.x()); if (!clipped_title_rect.is_empty()) { - painter.draw_text(clipped_title_rect.translated(1, 2), title_text, wm.window_title_font(), Gfx::TextAlignment::CenterLeft, palette.window_title_shadow(), Gfx::TextElision::Right); + painter.draw_text(clipped_title_rect.translated(1, 2), title_text, wm.window_title_font(), Gfx::TextAlignment::CenterLeft, shadow_color, Gfx::TextElision::Right); // FIXME: The translated(0, 1) wouldn't be necessary if we could center text based on its baseline. painter.draw_text(clipped_title_rect.translated(0, 1), title_text, wm.window_title_font(), Gfx::TextAlignment::CenterLeft, title_color, Gfx::TextElision::Right); } diff --git a/Services/WindowServer/WindowFrame.h b/Services/WindowServer/WindowFrame.h index b7c4b309d4..21e8950373 100644 --- a/Services/WindowServer/WindowFrame.h +++ b/Services/WindowServer/WindowFrame.h @@ -64,6 +64,8 @@ private: Color title_color; Color border_color; Color border_color2; + Color title_stripes_color; + Color title_shadow_color; }; FrameColors compute_frame_colors() const;