ソースを参照

LibGfx+LibGUI: Allow theming the focus outline of AbstractButton

Tibor Nagy 5 年 前
コミット
6e2a16c8a8

+ 1 - 0
Base/res/themes/Dark.ini

@@ -41,3 +41,4 @@ RulerBorder=#666666
 RulerActiveText=white
 RulerInactiveText=#d5d0c7
 TextCursor=#9c9cd5
+FocusOutline=#606060

+ 1 - 0
Base/res/themes/Default.ini

@@ -41,3 +41,4 @@ RulerBorder=#404040
 RulerActiveText=#404040
 RulerInactiveText=#808080
 TextCursor=red
+FocusOutline=#909090

+ 1 - 0
Base/res/themes/Hotdog Stand.ini

@@ -41,3 +41,4 @@ RulerBorder=black
 RulerActiveText=yellow
 RulerInactiveText=white
 TextCursor=black
+FocusOutline=#909090

+ 1 - 0
Base/res/themes/Nord.ini

@@ -41,3 +41,4 @@ RulerBorder=#3b4252
 RulerActiveText=#95adc5
 RulerInactiveText=#7e9dbc
 TextCursor=#7e9dbc
+FocusOutline=#7e9dbc

+ 1 - 0
Base/res/themes/Xmas.ini

@@ -41,3 +41,4 @@ RulerBorder=#606060
 RulerActiveText=#404040
 RulerInactiveText=#808080
 TextCursor=#ee3532
+FocusOutline=#909090

+ 1 - 1
Libraries/LibGUI/AbstractButton.cpp

@@ -186,7 +186,7 @@ void AbstractButton::paint_text(Painter& painter, const Gfx::Rect& rect, const G
         return;
     painter.draw_text(clipped_rect, text(), font, text_alignment, palette().button_text(), Gfx::TextElision::Right);
     if (is_focused())
-        painter.draw_rect(clipped_rect.inflated(6, 4), Color(140, 140, 140));
+        painter.draw_rect(clipped_rect.inflated(6, 4), palette().focus_outline());
 }
 
 void AbstractButton::change_event(Event& event)

+ 1 - 0
Libraries/LibGfx/Palette.h

@@ -99,6 +99,7 @@ public:
     Color ruler_active_text() const { return color(ColorRole::RulerActiveText); }
     Color ruler_inactive_text() const { return color(ColorRole::RulerInactiveText); }
     Color text_cursor() const { return color(ColorRole::TextCursor); }
+    Color focus_outline() const { return color(ColorRole::FocusOutline); }
 
     Color link() const { return color(ColorRole::Link); }
     Color active_link() const { return color(ColorRole::ActiveLink); }

+ 1 - 0
Libraries/LibGfx/SystemTheme.cpp

@@ -113,6 +113,7 @@ RefPtr<SharedBuffer> load_system_theme(const String& path)
     DO_COLOR(RulerActiveText);
     DO_COLOR(RulerInactiveText);
     DO_COLOR(TextCursor);
+    DO_COLOR(FocusOutline);
 
     buffer->seal();
     buffer->share_globally();

+ 1 - 0
Libraries/LibGfx/SystemTheme.h

@@ -76,6 +76,7 @@ enum class ColorRole {
     RulerActiveText,
     RulerInactiveText,
     TextCursor,
+    FocusOutline,
 
     __Count,