summaryrefslogtreecommitdiff
path: root/Libraries/LibGUI/GApplication.h
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-12-24 20:57:54 +0100
committerAndreas Kling <awesomekling@gmail.com>2019-12-24 21:27:16 +0100
commita79bac428b7857b9db2d0641daf3b7f2e3deb91f (patch)
tree7fee3f0764147238e218b79aa1f526c36deeecb0 /Libraries/LibGUI/GApplication.h
parentcb4e51a7a58d1c536d51484f83239d8cd9009616 (diff)
downloadserenity-a79bac428b7857b9db2d0641daf3b7f2e3deb91f.zip
LibGUI+LibDraw: Add "Palette" concept for scoped color theming
GApplication now has a palette. This palette contains all the system theme colors by default, and is inherited by a new top-level GWidget. New child widgets inherit their parents palette. It is possible to override the GApplication palette, and the palette of any GWidget. The Palette object contains a bunch of colors, each corresponding to a ColorRole. Each role has a convenience getter as well. Each GWidget now has a background_role() and foreground_role(), which are then looked up in their current palette when painting. This means that you no longer alter the background color of a widget by setting it directly, rather you alter either its background role, or the widget's palette.
Diffstat (limited to 'Libraries/LibGUI/GApplication.h')
-rw-r--r--Libraries/LibGUI/GApplication.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/Libraries/LibGUI/GApplication.h b/Libraries/LibGUI/GApplication.h
index ad8e57e76e..539ebef04f 100644
--- a/Libraries/LibGUI/GApplication.h
+++ b/Libraries/LibGUI/GApplication.h
@@ -10,7 +10,10 @@ class GAction;
class GKeyEvent;
class GMenuBar;
class GWindow;
+class GWindowServerConnection;
+class Palette;
class Point;
+class SharedBuffer;
class GApplication {
public:
@@ -39,9 +42,16 @@ public:
const String& invoked_as() const { return m_invoked_as; }
const Vector<String>& args() const { return m_args; }
+ const Palette& palette() const { return *m_palette; }
+ void set_palette(const Palette&);
+
+ void set_system_palette(SharedBuffer&);
+
private:
OwnPtr<CEventLoop> m_event_loop;
OwnPtr<GMenuBar> m_menubar;
+ RefPtr<Palette> m_palette;
+ RefPtr<Palette> m_system_palette;
HashMap<GShortcut, GAction*> m_global_shortcut_actions;
class TooltipWindow;
TooltipWindow* m_tooltip_window { nullptr };