1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-24 00:15:07 +00:00

Themes: Fix default theme window stripes and shadow after #2811

Change #2811 made window title stripes and window title shadow themable,
but it used the same stripe and shadow color for all window modes.
This is fine for the new 'basalt' theme which uses the same color
in all four window modes, but it changed the default theme so that
background windows had brown stripes and a brown shadow.

Instead, make the title stripe and title shadow themable per window mode,
and change the default theme to restore the colors it had before
change #2811: The title stripe color is the same as Border1 for all
window modes, and the title shadow is the same as the title stripe
darkened by 0.6.
This commit is contained in:
Nico Weber 2020-08-01 13:09:18 -04:00 committed by Andreas Kling
parent d366ad8232
commit 6dd10ad8dc
7 changed files with 50 additions and 18 deletions

View file

@ -3,17 +3,23 @@ DesktopBackground=#171717
ActiveWindowBorder1=black ActiveWindowBorder1=black
ActiveWindowBorder2=#1f1f1f ActiveWindowBorder2=#1f1f1f
ActiveWindowTitle=white ActiveWindowTitle=white
ActiveWindowTitleShadow=#00000000
ActiveWindowTitleStripes=#00000000
InactiveWindowBorder1=#171717 InactiveWindowBorder1=#171717
InactiveWindowBorder2=#1f1f1f InactiveWindowBorder2=#1f1f1f
InactiveWindowTitle=#aaaaaa InactiveWindowTitle=#aaaaaa
InactiveWindowTitleShadow=#00000000
InactiveWindowTitleStripes=#00000000
MovingWindowBorder1=black MovingWindowBorder1=black
MovingWindowBorder2=#2f1f1f MovingWindowBorder2=#2f1f1f
MovingWindowTitle=white MovingWindowTitle=white
MovingWindowTitleShadow=#00000000
MovingWindowTitleStripes=#00000000
HighlightWindowBorder1=black HighlightWindowBorder1=black
HighlightWindowBorder2=#3f2f0f HighlightWindowBorder2=#3f2f0f
HighlightWindowTitle=white HighlightWindowTitle=white
WindowTitleShadow=#00000000 HighlightWindowTitleShadow=#00000000
WindowTitleStripes=#00000000 HighlightWindowTitleStripes=#00000000
MenuBase=#1f1f1f MenuBase=#1f1f1f
MenuBaseText=white MenuBaseText=white
MenuStripe=#171717 MenuStripe=#171717

View file

@ -3,17 +3,23 @@ DesktopBackground=#505050
ActiveWindowBorder1=#6e2209 ActiveWindowBorder1=#6e2209
ActiveWindowBorder2=#f4ca9e ActiveWindowBorder2=#f4ca9e
ActiveWindowTitle=white ActiveWindowTitle=white
ActiveWindowTitleShadow=#421405
ActiveWindowTitleStripes=#6e2209
InactiveWindowBorder1=#808080 InactiveWindowBorder1=#808080
InactiveWindowBorder2=#c0c0c0 InactiveWindowBorder2=#c0c0c0
InactiveWindowTitle=#d5d0c7 InactiveWindowTitle=#d5d0c7
InactiveWindowTitleShadow=#4c4c4c
InactiveWindowTitleStripes=#808080
MovingWindowBorder1=#a1320d MovingWindowBorder1=#a1320d
MovingWindowBorder2=#fadcbb MovingWindowBorder2=#fadcbb
MovingWindowTitle=white MovingWindowTitle=white
MovingWindowTitleShadow=#601e07
MovingWindowTitleStripes=#a1320d
HighlightWindowBorder1=#a10d0d HighlightWindowBorder1=#a10d0d
HighlightWindowBorder2=#fabbbb HighlightWindowBorder2=#fabbbb
HighlightWindowTitle=white HighlightWindowTitle=white
WindowTitleShadow=#421405 HighlightWindowTitleShadow=#600707
WindowTitleStripes=#6e2209 HighlightWindowTitleStripes=#a10d0d
MenuBase=white MenuBase=white
MenuBaseText=black MenuBaseText=black
MenuStripe=#bbb7b0 MenuStripe=#bbb7b0

View file

@ -72,17 +72,23 @@ public:
Color active_window_border1() const { return color(ColorRole::ActiveWindowBorder1); } Color active_window_border1() const { return color(ColorRole::ActiveWindowBorder1); }
Color active_window_border2() const { return color(ColorRole::ActiveWindowBorder2); } Color active_window_border2() const { return color(ColorRole::ActiveWindowBorder2); }
Color active_window_title() const { return color(ColorRole::ActiveWindowTitle); } 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_border1() const { return color(ColorRole::InactiveWindowBorder1); }
Color inactive_window_border2() const { return color(ColorRole::InactiveWindowBorder2); } Color inactive_window_border2() const { return color(ColorRole::InactiveWindowBorder2); }
Color inactive_window_title() const { return color(ColorRole::InactiveWindowTitle); } 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_border1() const { return color(ColorRole::MovingWindowBorder1); }
Color moving_window_border2() const { return color(ColorRole::MovingWindowBorder2); } Color moving_window_border2() const { return color(ColorRole::MovingWindowBorder2); }
Color moving_window_title() const { return color(ColorRole::MovingWindowTitle); } 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_border1() const { return color(ColorRole::HighlightWindowBorder1); }
Color highlight_window_border2() const { return color(ColorRole::HighlightWindowBorder2); } Color highlight_window_border2() const { return color(ColorRole::HighlightWindowBorder2); }
Color highlight_window_title() const { return color(ColorRole::HighlightWindowTitle); } Color highlight_window_title() const { return color(ColorRole::HighlightWindowTitle); }
Color window_title_stripes() const { return color(ColorRole::WindowTitleStripes); } Color highlight_window_title_stripes() const { return color(ColorRole::HighlightWindowTitleStripes); }
Color window_title_shadow() const { return color(ColorRole::WindowTitleShadow); } Color highlight_window_title_shadow() const { return color(ColorRole::HighlightWindowTitleShadow); }
Color menu_stripe() const { return color(ColorRole::MenuStripe); } Color menu_stripe() const { return color(ColorRole::MenuStripe); }
Color menu_base() const { return color(ColorRole::MenuBase); } Color menu_base() const { return color(ColorRole::MenuBase); }
Color menu_base_text() const { return color(ColorRole::MenuBaseText); } Color menu_base_text() const { return color(ColorRole::MenuBaseText); }

View file

@ -120,17 +120,23 @@ RefPtr<SharedBuffer> load_system_theme(const String& path)
DO_COLOR(ActiveWindowBorder1); DO_COLOR(ActiveWindowBorder1);
DO_COLOR(ActiveWindowBorder2); DO_COLOR(ActiveWindowBorder2);
DO_COLOR(ActiveWindowTitle); DO_COLOR(ActiveWindowTitle);
DO_COLOR(ActiveWindowTitleShadow);
DO_COLOR(ActiveWindowTitleStripes);
DO_COLOR(InactiveWindowBorder1); DO_COLOR(InactiveWindowBorder1);
DO_COLOR(InactiveWindowBorder2); DO_COLOR(InactiveWindowBorder2);
DO_COLOR(InactiveWindowTitle); DO_COLOR(InactiveWindowTitle);
DO_COLOR(InactiveWindowTitleShadow);
DO_COLOR(InactiveWindowTitleStripes);
DO_COLOR(MovingWindowBorder1); DO_COLOR(MovingWindowBorder1);
DO_COLOR(MovingWindowBorder2); DO_COLOR(MovingWindowBorder2);
DO_COLOR(MovingWindowTitle); DO_COLOR(MovingWindowTitle);
DO_COLOR(MovingWindowTitleShadow);
DO_COLOR(MovingWindowTitleStripes);
DO_COLOR(HighlightWindowBorder1); DO_COLOR(HighlightWindowBorder1);
DO_COLOR(HighlightWindowBorder2); DO_COLOR(HighlightWindowBorder2);
DO_COLOR(HighlightWindowTitle); DO_COLOR(HighlightWindowTitle);
DO_COLOR(WindowTitleShadow); DO_COLOR(HighlightWindowTitleShadow);
DO_COLOR(WindowTitleStripes); DO_COLOR(HighlightWindowTitleStripes);
DO_COLOR(MenuStripe); DO_COLOR(MenuStripe);
DO_COLOR(MenuBase); DO_COLOR(MenuBase);
DO_COLOR(MenuBaseText); DO_COLOR(MenuBaseText);

View file

@ -39,17 +39,23 @@ enum class ColorRole {
ActiveWindowBorder1, ActiveWindowBorder1,
ActiveWindowBorder2, ActiveWindowBorder2,
ActiveWindowTitle, ActiveWindowTitle,
ActiveWindowTitleShadow,
ActiveWindowTitleStripes,
InactiveWindowBorder1, InactiveWindowBorder1,
InactiveWindowBorder2, InactiveWindowBorder2,
InactiveWindowTitle, InactiveWindowTitle,
InactiveWindowTitleShadow,
InactiveWindowTitleStripes,
MovingWindowBorder1, MovingWindowBorder1,
MovingWindowBorder2, MovingWindowBorder2,
MovingWindowTitle, MovingWindowTitle,
MovingWindowTitleShadow,
MovingWindowTitleStripes,
HighlightWindowBorder1, HighlightWindowBorder1,
HighlightWindowBorder2, HighlightWindowBorder2,
HighlightWindowTitle, HighlightWindowTitle,
WindowTitleShadow, HighlightWindowTitleStripes,
WindowTitleStripes, HighlightWindowTitleShadow,
MenuStripe, MenuStripe,
MenuBase, MenuBase,
MenuBaseText, MenuBaseText,

View file

@ -170,12 +170,12 @@ WindowFrame::FrameColors WindowFrame::compute_frame_colors() const
auto& wm = WindowManager::the(); auto& wm = WindowManager::the();
auto palette = wm.palette(); auto palette = wm.palette();
if (&m_window == wm.m_highlight_window) 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) 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)) if (wm.is_active_window_or_accessory(m_window))
return { palette.active_window_title(), palette.active_window_border1(), palette.active_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() }; 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) 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; int stripe_bottom = m_window.height() - 3;
if (stripe_top && stripe_bottom && stripe_top < stripe_bottom) { if (stripe_top && stripe_bottom && stripe_top < stripe_bottom) {
for (int i = 2; i <= palette.window_title_height() - 2; i += 2) { 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; auto titlebar_title_rect = titlebar_inner_rect;
titlebar_title_rect.set_width(WindowManager::the().window_title_font().width(title_text)); 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(); auto& wm = WindowManager::the();
painter.draw_line(titlebar_rect.bottom_left().translated(0, 1), titlebar_rect.bottom_right().translated(0, 1), palette.button()); 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; int stripe_right = leftmost_button_rect.left() - 3;
if (stripe_left && stripe_right && stripe_left < stripe_right) { if (stripe_left && stripe_right && stripe_left < stripe_right) {
for (int i = 2; i <= titlebar_inner_rect.height() - 2; i += 2) { 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; auto clipped_title_rect = titlebar_title_rect;
clipped_title_rect.set_width(stripe_right - clipped_title_rect.x()); clipped_title_rect.set_width(stripe_right - clipped_title_rect.x());
if (!clipped_title_rect.is_empty()) { 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. // 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); painter.draw_text(clipped_title_rect.translated(0, 1), title_text, wm.window_title_font(), Gfx::TextAlignment::CenterLeft, title_color, Gfx::TextElision::Right);
} }

View file

@ -64,6 +64,8 @@ private:
Color title_color; Color title_color;
Color border_color; Color border_color;
Color border_color2; Color border_color2;
Color title_stripes_color;
Color title_shadow_color;
}; };
FrameColors compute_frame_colors() const; FrameColors compute_frame_colors() const;