diff options
Diffstat (limited to 'widget')
-rw-r--r-- | widget/src/themer.rs | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/widget/src/themer.rs b/widget/src/themer.rs index a27e4813..3a5fd823 100644 --- a/widget/src/themer.rs +++ b/widget/src/themer.rs @@ -1,3 +1,4 @@ +use crate::container; use crate::core::event::{self, Event}; use crate::core::layout; use crate::core::mouse; @@ -6,8 +7,8 @@ use crate::core::renderer; use crate::core::widget::tree::{self, Tree}; use crate::core::widget::Operation; use crate::core::{ - Clipboard, Element, Layout, Length, Point, Rectangle, Shell, Size, Vector, - Widget, + Background, Clipboard, Element, Layout, Length, Point, Rectangle, Shell, + Size, Vector, Widget, }; use crate::style::application; @@ -24,6 +25,7 @@ where content: Element<'a, Message, Theme, Renderer>, theme: Theme, style: Theme::Style, + show_background: bool, } impl<'a, Message, Theme, Renderer> Themer<'a, Message, Theme, Renderer> @@ -41,8 +43,15 @@ where content: content.into(), theme, style: Theme::Style::default(), + show_background: false, } } + + /// Sets whether to draw the background color of the `Theme`. + pub fn background(mut self, background: bool) -> Self { + self.show_background = background; + self + } } impl<'a, AnyTheme, Message, Theme, Renderer> Widget<Message, AnyTheme, Renderer> @@ -133,6 +142,19 @@ where ) { let appearance = self.theme.appearance(&self.style); + if self.show_background { + container::draw_background( + renderer, + &container::Appearance { + background: Some(Background::Color( + appearance.background_color, + )), + ..container::Appearance::default() + }, + layout.bounds(), + ); + } + self.content.as_widget().draw( tree, renderer, |