mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:22: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
				
			
		|  | @ -4,94 +4,6 @@ | |||
| #include <ctype.h> | ||||
| #include <stdio.h> | ||||
| 
 | ||||
| Color::Color(SystemColor system_color) | ||||
| { | ||||
|     auto& theme = current_system_theme(); | ||||
|     switch (system_color) { | ||||
|     case SystemColor::Window: | ||||
|         m_value = theme.window.value(); | ||||
|         break; | ||||
|     case SystemColor::WindowText: | ||||
|         m_value = theme.window_text.value(); | ||||
|         break; | ||||
|     case SystemColor::Base: | ||||
|         m_value = theme.base.value(); | ||||
|         break; | ||||
|     case SystemColor::ThreedShadow1: | ||||
|         m_value = theme.threed_shadow1.value(); | ||||
|         break; | ||||
|     case SystemColor::ThreedShadow2: | ||||
|         m_value = theme.threed_shadow2.value(); | ||||
|         break; | ||||
|     case SystemColor::ThreedHighlight: | ||||
|         m_value = theme.threed_highlight.value(); | ||||
|         break; | ||||
|     case SystemColor::Button: | ||||
|         m_value = theme.button.value(); | ||||
|         break; | ||||
|     case SystemColor::ButtonText: | ||||
|         m_value = theme.button_text.value(); | ||||
|         break; | ||||
|     case SystemColor::HoverHighlight: | ||||
|         m_value = theme.hover_highlight.value(); | ||||
|         break; | ||||
|     case SystemColor::Selection: | ||||
|         m_value = theme.selection.value(); | ||||
|         break; | ||||
|     case SystemColor::SelectionText: | ||||
|         m_value = theme.selection_text.value(); | ||||
|         break; | ||||
|     case SystemColor::DesktopBackground: | ||||
|         m_value = theme.desktop_background.value(); | ||||
|         break; | ||||
|     case SystemColor::ActiveWindowBorder1: | ||||
|         m_value = theme.active_window_border1.value(); | ||||
|         break; | ||||
|     case SystemColor::ActiveWindowBorder2: | ||||
|         m_value = theme.active_window_border2.value(); | ||||
|         break; | ||||
|     case SystemColor::ActiveWindowTitle: | ||||
|         m_value = theme.active_window_title.value(); | ||||
|         break; | ||||
|     case SystemColor::InactiveWindowBorder1: | ||||
|         m_value = theme.inactive_window_border1.value(); | ||||
|         break; | ||||
|     case SystemColor::InactiveWindowBorder2: | ||||
|         m_value = theme.inactive_window_border2.value(); | ||||
|         break; | ||||
|     case SystemColor::InactiveWindowTitle: | ||||
|         m_value = theme.inactive_window_title.value(); | ||||
|         break; | ||||
|     case SystemColor::MovingWindowBorder1: | ||||
|         m_value = theme.moving_window_border1.value(); | ||||
|         break; | ||||
|     case SystemColor::MovingWindowBorder2: | ||||
|         m_value = theme.moving_window_border2.value(); | ||||
|         break; | ||||
|     case SystemColor::MovingWindowTitle: | ||||
|         m_value = theme.moving_window_title.value(); | ||||
|         break; | ||||
|     case SystemColor::HighlightWindowBorder1: | ||||
|         m_value = theme.highlight_window_border1.value(); | ||||
|         break; | ||||
|     case SystemColor::HighlightWindowBorder2: | ||||
|         m_value = theme.highlight_window_border2.value(); | ||||
|         break; | ||||
|     case SystemColor::HighlightWindowTitle: | ||||
|         m_value = theme.highlight_window_title.value(); | ||||
|         break; | ||||
|     case SystemColor::MenuStripe: | ||||
|         m_value = theme.menu_stripe.value(); | ||||
|         break; | ||||
|     case SystemColor::MenuBase: | ||||
|         m_value = theme.menu_base.value(); | ||||
|         break; | ||||
|     case SystemColor::MenuSelection: | ||||
|         m_value = theme.menu_selection.value(); | ||||
|         break; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| Color::Color(NamedColor named) | ||||
| { | ||||
|     struct { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling