summaryrefslogtreecommitdiffstats
path: root/widget
diff options
context:
space:
mode:
Diffstat (limited to 'widget')
-rw-r--r--widget/src/themer.rs26
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,