summaryrefslogtreecommitdiffstats
path: root/pure/src/widget
diff options
context:
space:
mode:
Diffstat (limited to 'pure/src/widget')
-rw-r--r--pure/src/widget/button.rs32
-rw-r--r--pure/src/widget/checkbox.rs2
-rw-r--r--pure/src/widget/column.rs2
-rw-r--r--pure/src/widget/container.rs2
-rw-r--r--pure/src/widget/image.rs2
-rw-r--r--pure/src/widget/pane_grid.rs2
-rw-r--r--pure/src/widget/pane_grid/content.rs4
-rw-r--r--pure/src/widget/pane_grid/title_bar.rs3
-rw-r--r--pure/src/widget/pick_list.rs1
-rw-r--r--pure/src/widget/progress_bar.rs2
-rw-r--r--pure/src/widget/radio.rs2
-rw-r--r--pure/src/widget/row.rs2
-rw-r--r--pure/src/widget/rule.rs2
-rw-r--r--pure/src/widget/scrollable.rs2
-rw-r--r--pure/src/widget/slider.rs1
-rw-r--r--pure/src/widget/space.rs2
-rw-r--r--pure/src/widget/svg.rs2
-rw-r--r--pure/src/widget/text.rs2
-rw-r--r--pure/src/widget/text_input.rs1
-rw-r--r--pure/src/widget/toggler.rs2
-rw-r--r--pure/src/widget/tooltip.rs3
-rw-r--r--pure/src/widget/tree.rs13
22 files changed, 75 insertions, 11 deletions
diff --git a/pure/src/widget/button.rs b/pure/src/widget/button.rs
index 456c2509..45f4a6aa 100644
--- a/pure/src/widget/button.rs
+++ b/pure/src/widget/button.rs
@@ -50,25 +50,34 @@ use button::State;
/// disabled_button().on_press(Message::ButtonPressed)
/// }
/// ```
-pub struct Button<'a, Message, Renderer> {
+pub struct Button<'a, Message, Renderer>
+where
+ Renderer: iced_native::Renderer,
+ Renderer::Theme: StyleSheet,
+{
content: Element<'a, Message, Renderer>,
on_press: Option<Message>,
- style_sheet: Box<dyn StyleSheet + 'a>,
width: Length,
height: Length,
padding: Padding,
+ variant: <Renderer::Theme as StyleSheet>::Variant,
}
-impl<'a, Message, Renderer> Button<'a, Message, Renderer> {
+impl<'a, Message, Renderer> Button<'a, Message, Renderer>
+where
+ Renderer: iced_native::Renderer,
+ Renderer::Theme: StyleSheet,
+ <Renderer::Theme as StyleSheet>::Variant: Default,
+{
/// Creates a new [`Button`] with the given content.
pub fn new(content: impl Into<Element<'a, Message, Renderer>>) -> Self {
Button {
content: content.into(),
on_press: None,
- style_sheet: Default::default(),
width: Length::Shrink,
height: Length::Shrink,
padding: Padding::new(5),
+ variant: <Renderer::Theme as StyleSheet>::Variant::default(),
}
}
@@ -98,12 +107,12 @@ impl<'a, Message, Renderer> Button<'a, Message, Renderer> {
self
}
- /// Sets the style of the [`Button`].
+ /// Sets the style variant of this [`Button`].
pub fn style(
mut self,
- style_sheet: impl Into<Box<dyn StyleSheet + 'a>>,
+ variant: <Renderer::Theme as StyleSheet>::Variant,
) -> Self {
- self.style_sheet = style_sheet.into();
+ self.variant = variant;
self
}
}
@@ -113,6 +122,8 @@ impl<'a, Message, Renderer> Widget<Message, Renderer>
where
Message: 'a + Clone,
Renderer: 'a + iced_native::Renderer,
+ Renderer::Theme: StyleSheet,
+ <Renderer::Theme as StyleSheet>::Variant: Copy,
{
fn tag(&self) -> tree::Tag {
tree::Tag::of::<State>()
@@ -191,6 +202,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
_style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -204,13 +216,15 @@ where
bounds,
cursor_position,
self.on_press.is_some(),
- self.style_sheet.as_ref(),
+ theme,
+ self.variant,
|| tree.state.downcast_ref::<State>(),
);
self.content.as_widget().draw(
&tree.children[0],
renderer,
+ theme,
&renderer::Style {
text_color: styling.text_color,
},
@@ -254,6 +268,8 @@ impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>>
where
Message: Clone + 'a,
Renderer: iced_native::Renderer + 'a,
+ Renderer::Theme: StyleSheet,
+ <Renderer::Theme as StyleSheet>::Variant: Copy,
{
fn into(self) -> Element<'a, Message, Renderer> {
Element::new(self)
diff --git a/pure/src/widget/checkbox.rs b/pure/src/widget/checkbox.rs
index 98f55a56..a6a6f8de 100644
--- a/pure/src/widget/checkbox.rs
+++ b/pure/src/widget/checkbox.rs
@@ -59,6 +59,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -67,6 +68,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/column.rs b/pure/src/widget/column.rs
index 7256f474..74d789a1 100644
--- a/pure/src/widget/column.rs
+++ b/pure/src/widget/column.rs
@@ -194,6 +194,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -208,6 +209,7 @@ where
child.as_widget().draw(
state,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/container.rs b/pure/src/widget/container.rs
index 91db1f3f..0ec2351a 100644
--- a/pure/src/widget/container.rs
+++ b/pure/src/widget/container.rs
@@ -201,6 +201,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
renderer_style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -213,6 +214,7 @@ where
self.content.as_widget().draw(
&tree.children[0],
renderer,
+ theme,
&renderer::Style {
text_color: style
.text_color
diff --git a/pure/src/widget/image.rs b/pure/src/widget/image.rs
index ef764ec2..c42113dc 100644
--- a/pure/src/widget/image.rs
+++ b/pure/src/widget/image.rs
@@ -38,6 +38,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -46,6 +47,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/pane_grid.rs b/pure/src/widget/pane_grid.rs
index c532a6de..168fe12b 100644
--- a/pure/src/widget/pane_grid.rs
+++ b/pure/src/widget/pane_grid.rs
@@ -331,6 +331,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -360,6 +361,7 @@ where
content.draw(
tree,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/pane_grid/content.rs b/pure/src/widget/pane_grid/content.rs
index e66ac40b..5069bd4a 100644
--- a/pure/src/widget/pane_grid/content.rs
+++ b/pure/src/widget/pane_grid/content.rs
@@ -89,6 +89,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -112,6 +113,7 @@ where
title_bar.draw(
&tree.children[1],
renderer,
+ theme,
style,
title_bar_layout,
cursor_position,
@@ -122,6 +124,7 @@ where
self.body.as_widget().draw(
&tree.children[0],
renderer,
+ theme,
style,
body_layout,
cursor_position,
@@ -131,6 +134,7 @@ where
self.body.as_widget().draw(
&tree.children[0],
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/pane_grid/title_bar.rs b/pure/src/widget/pane_grid/title_bar.rs
index 4a7c8c17..28a3d7fc 100644
--- a/pure/src/widget/pane_grid/title_bar.rs
+++ b/pure/src/widget/pane_grid/title_bar.rs
@@ -113,6 +113,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
inherited_style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -136,6 +137,7 @@ where
self.content.as_widget().draw(
&tree.children[0],
renderer,
+ theme,
&inherited_style,
title_layout,
cursor_position,
@@ -149,6 +151,7 @@ where
controls.as_widget().draw(
&tree.children[1],
renderer,
+ theme,
&inherited_style,
controls_layout,
cursor_position,
diff --git a/pure/src/widget/pick_list.rs b/pure/src/widget/pick_list.rs
index 255e3681..78302a7d 100644
--- a/pure/src/widget/pick_list.rs
+++ b/pure/src/widget/pick_list.rs
@@ -181,6 +181,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ _theme: &Renderer::Theme,
_style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
diff --git a/pure/src/widget/progress_bar.rs b/pure/src/widget/progress_bar.rs
index 3016a81a..47a299ac 100644
--- a/pure/src/widget/progress_bar.rs
+++ b/pure/src/widget/progress_bar.rs
@@ -57,6 +57,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -65,6 +66,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/radio.rs b/pure/src/widget/radio.rs
index 7c98c937..c92c8dbc 100644
--- a/pure/src/widget/radio.rs
+++ b/pure/src/widget/radio.rs
@@ -60,6 +60,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -68,6 +69,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/row.rs b/pure/src/widget/row.rs
index 0385b8bd..e747adfc 100644
--- a/pure/src/widget/row.rs
+++ b/pure/src/widget/row.rs
@@ -181,6 +181,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -195,6 +196,7 @@ where
child.as_widget().draw(
state,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/rule.rs b/pure/src/widget/rule.rs
index ab8537ae..8e6af58e 100644
--- a/pure/src/widget/rule.rs
+++ b/pure/src/widget/rule.rs
@@ -57,6 +57,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -65,6 +66,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/scrollable.rs b/pure/src/widget/scrollable.rs
index 70e951ef..a0180dc0 100644
--- a/pure/src/widget/scrollable.rs
+++ b/pure/src/widget/scrollable.rs
@@ -171,6 +171,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -189,6 +190,7 @@ where
self.content.as_widget().draw(
&tree.children[0],
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/slider.rs b/pure/src/widget/slider.rs
index 4d8bbce4..2f934a48 100644
--- a/pure/src/widget/slider.rs
+++ b/pure/src/widget/slider.rs
@@ -195,6 +195,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
_style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
diff --git a/pure/src/widget/space.rs b/pure/src/widget/space.rs
index b408153b..7d95ebd7 100644
--- a/pure/src/widget/space.rs
+++ b/pure/src/widget/space.rs
@@ -56,6 +56,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -64,6 +65,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/svg.rs b/pure/src/widget/svg.rs
index 14180097..501d9bfa 100644
--- a/pure/src/widget/svg.rs
+++ b/pure/src/widget/svg.rs
@@ -36,6 +36,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -44,6 +45,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/text.rs b/pure/src/widget/text.rs
index 58a939c1..0a51b628 100644
--- a/pure/src/widget/text.rs
+++ b/pure/src/widget/text.rs
@@ -34,6 +34,7 @@ where
&self,
_tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -42,6 +43,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/text_input.rs b/pure/src/widget/text_input.rs
index 57ad26d9..7d768513 100644
--- a/pure/src/widget/text_input.rs
+++ b/pure/src/widget/text_input.rs
@@ -190,6 +190,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
_style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
diff --git a/pure/src/widget/toggler.rs b/pure/src/widget/toggler.rs
index b9c5ec02..e08b5f47 100644
--- a/pure/src/widget/toggler.rs
+++ b/pure/src/widget/toggler.rs
@@ -38,6 +38,7 @@ where
&self,
_state: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -46,6 +47,7 @@ where
<Self as iced_native::Widget<Message, Renderer>>::draw(
self,
renderer,
+ theme,
style,
layout,
cursor_position,
diff --git a/pure/src/widget/tooltip.rs b/pure/src/widget/tooltip.rs
index 3887732a..15aa32fe 100644
--- a/pure/src/widget/tooltip.rs
+++ b/pure/src/widget/tooltip.rs
@@ -157,6 +157,7 @@ where
&self,
tree: &Tree,
renderer: &mut Renderer,
+ theme: &Renderer::Theme,
inherited_style: &renderer::Style,
layout: Layout<'_>,
cursor_position: Point,
@@ -165,6 +166,7 @@ where
self.content.as_widget().draw(
&tree.children[0],
renderer,
+ theme,
inherited_style,
layout,
cursor_position,
@@ -191,6 +193,7 @@ where
tooltip,
&Tree::empty(),
renderer,
+ theme,
defaults,
layout,
cursor_position,
diff --git a/pure/src/widget/tree.rs b/pure/src/widget/tree.rs
index 0bb3107a..2f876523 100644
--- a/pure/src/widget/tree.rs
+++ b/pure/src/widget/tree.rs
@@ -31,7 +31,10 @@ impl Tree {
/// Creates a new [`Tree`] for the provided [`Element`].
pub fn new<'a, Message, Renderer>(
widget: impl Borrow<dyn Widget<Message, Renderer> + 'a>,
- ) -> Self {
+ ) -> Self
+ where
+ Renderer: iced_native::Renderer,
+ {
let widget = widget.borrow();
Self {
@@ -52,7 +55,9 @@ impl Tree {
pub fn diff<'a, Message, Renderer>(
&mut self,
new: impl Borrow<dyn Widget<Message, Renderer> + 'a>,
- ) {
+ ) where
+ Renderer: iced_native::Renderer,
+ {
if self.tag == new.borrow().tag() {
new.borrow().diff(self)
} else {
@@ -64,7 +69,9 @@ impl Tree {
pub fn diff_children<'a, Message, Renderer>(
&mut self,
new_children: &[impl Borrow<dyn Widget<Message, Renderer> + 'a>],
- ) {
+ ) where
+ Renderer: iced_native::Renderer,
+ {
self.diff_children_custom(
new_children,
|tree, widget| tree.diff(widget.borrow()),