Browse Source

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.
Nico Weber 5 years ago
parent
commit
6dd10ad8dc

+ 8 - 2
Base/res/themes/Basalt.ini

@@ -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
-WindowTitleStripes=#00000000
+HighlightWindowTitleShadow=#00000000
+HighlightWindowTitleStripes=#00000000
 MenuBase=#1f1f1f
 MenuBase=#1f1f1f
 MenuBaseText=white
 MenuBaseText=white
 MenuStripe=#171717
 MenuStripe=#171717

+ 8 - 2
Base/res/themes/Default.ini

@@ -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
-WindowTitleStripes=#6e2209
+HighlightWindowTitleShadow=#600707
+HighlightWindowTitleStripes=#a10d0d
 MenuBase=white
 MenuBase=white
 MenuBaseText=black
 MenuBaseText=black
 MenuStripe=#bbb7b0
 MenuStripe=#bbb7b0

+ 8 - 2
Libraries/LibGfx/Palette.h

@@ -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 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_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); }

+ 8 - 2
Libraries/LibGfx/SystemTheme.cpp

@@ -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(WindowTitleStripes);
+    DO_COLOR(HighlightWindowTitleShadow);
+    DO_COLOR(HighlightWindowTitleStripes);
     DO_COLOR(MenuStripe);
     DO_COLOR(MenuStripe);
     DO_COLOR(MenuBase);
     DO_COLOR(MenuBase);
     DO_COLOR(MenuBaseText);
     DO_COLOR(MenuBaseText);

+ 8 - 2
Libraries/LibGfx/SystemTheme.h

@@ -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,
-    WindowTitleStripes,
+    HighlightWindowTitleStripes,
+    HighlightWindowTitleShadow,
     MenuStripe,
     MenuStripe,
     MenuBase,
     MenuBase,
     MenuBaseText,
     MenuBaseText,

+ 8 - 8
Services/WindowServer/WindowFrame.cpp

@@ -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.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)
 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);
     }
     }

+ 2 - 0
Services/WindowServer/WindowFrame.h

@@ -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;