mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 04:52:45 +00:00 
			
		
		
		
	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.
This commit is contained in:
		
							parent
							
								
									cb4e51a7a5
								
							
						
					
					
						commit
						a79bac428b
					
				
					 62 changed files with 448 additions and 410 deletions
				
			
		|  | @ -1,6 +1,7 @@ | |||
| #include <LibDraw/Palette.h> | ||||
| #include <LibDraw/StylePainter.h> | ||||
| #include <LibGUI/GGroupBox.h> | ||||
| #include <LibGUI/GPainter.h> | ||||
| #include <LibDraw/StylePainter.h> | ||||
| 
 | ||||
| GGroupBox::GGroupBox(GWidget* parent) | ||||
|     : GGroupBox({}, parent) | ||||
|  | @ -11,8 +12,6 @@ GGroupBox::GGroupBox(const StringView& title, GWidget* parent) | |||
|     : GWidget(parent) | ||||
|     , m_title(title) | ||||
| { | ||||
|     set_fill_with_background_color(true); | ||||
|     set_background_color(SystemColor::Window); | ||||
| } | ||||
| 
 | ||||
| GGroupBox::~GGroupBox() | ||||
|  | @ -28,11 +27,11 @@ void GGroupBox::paint_event(GPaintEvent& event) | |||
|         0, font().glyph_height() / 2, | ||||
|         width(), height() - font().glyph_height() / 2 | ||||
|     }; | ||||
|     StylePainter::paint_frame(painter, frame_rect, FrameShape::Box, FrameShadow::Sunken, 2); | ||||
|     StylePainter::paint_frame(painter, frame_rect, palette(), FrameShape::Box, FrameShadow::Sunken, 2); | ||||
| 
 | ||||
|     Rect text_rect { 4, 0, font().width(m_title) + 6, font().glyph_height() }; | ||||
|     painter.fill_rect(text_rect, background_color()); | ||||
|     painter.draw_text(text_rect, m_title, TextAlignment::Center, foreground_color()); | ||||
|     painter.fill_rect(text_rect, palette().button()); | ||||
|     painter.draw_text(text_rect, m_title, TextAlignment::Center, palette().button_text()); | ||||
| } | ||||
| 
 | ||||
| void GGroupBox::set_title(const StringView& title) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling