diff options
Diffstat (limited to '')
27 files changed, 101 insertions, 16 deletions
| diff --git a/pure/src/element.rs b/pure/src/element.rs index 5450db20..35c68716 100644 --- a/pure/src/element.rs +++ b/pure/src/element.rs @@ -25,7 +25,10 @@ pub struct Element<'a, Message, Renderer> {  impl<'a, Message, Renderer> Element<'a, Message, Renderer> {      /// Creates a new [`Element`] containing the given [`Widget`]. -    pub fn new(widget: impl Widget<Message, Renderer> + 'a) -> Self { +    pub fn new(widget: impl Widget<Message, Renderer> + 'a) -> Self +    where +        Renderer: iced_native::Renderer, +    {          Self {              widget: Box::new(widget),          } @@ -278,6 +281,7 @@ where          &self,          tree: &Tree,          renderer: &mut Renderer, +        theme: &Renderer::Theme,          style: &renderer::Style,          layout: Layout<'_>,          cursor_position: Point, @@ -286,6 +290,7 @@ where          self.widget.draw(              tree,              renderer, +            theme,              style,              layout,              cursor_position, diff --git a/pure/src/helpers.rs b/pure/src/helpers.rs index 746b807d..ad6f10b1 100644 --- a/pure/src/helpers.rs +++ b/pure/src/helpers.rs @@ -50,7 +50,12 @@ where  /// [`Button`]: widget::Button  pub fn button<'a, Message, Renderer>(      content: impl Into<Element<'a, Message, Renderer>>, -) -> widget::Button<'a, Message, Renderer> { +) -> widget::Button<'a, Message, Renderer> +where +    Renderer: iced_native::Renderer, +    Renderer::Theme: widget::button::StyleSheet, +    <Renderer::Theme as widget::button::StyleSheet>::Variant: Default, +{      widget::Button::new(content)  } diff --git a/pure/src/lib.rs b/pure/src/lib.rs index fa5fd46f..95aa3098 100644 --- a/pure/src/lib.rs +++ b/pure/src/lib.rs @@ -174,7 +174,9 @@ impl State {      fn diff<Message, Renderer>(          &mut self,          new_element: &Element<'_, Message, Renderer>, -    ) { +    ) where +        Renderer: iced_native::Renderer, +    {          self.state_tree.diff(new_element);      }  } @@ -224,6 +226,7 @@ where      fn draw(          &self,          renderer: &mut Renderer, +        theme: &Renderer::Theme,          style: &renderer::Style,          layout: Layout<'_>,          cursor_position: Point, @@ -232,6 +235,7 @@ where          self.element.as_widget().draw(              &self.state.state_tree,              renderer, +            theme,              style,              layout,              cursor_position, diff --git a/pure/src/overlay.rs b/pure/src/overlay.rs index fecaa2ac..b82d8a67 100644 --- a/pure/src/overlay.rs +++ b/pure/src/overlay.rs @@ -14,7 +14,10 @@ pub fn from_children<'a, Message, Renderer>(      tree: &'a mut Tree,      layout: Layout<'_>,      renderer: &Renderer, -) -> Option<Element<'a, Message, Renderer>> { +) -> Option<Element<'a, Message, Renderer>> +where +    Renderer: iced_native::Renderer, +{      children          .iter()          .zip(&mut tree.children) diff --git a/pure/src/widget.rs b/pure/src/widget.rs index cc04cc96..ab63f7cc 100644 --- a/pure/src/widget.rs +++ b/pure/src/widget.rs @@ -53,7 +53,10 @@ use iced_native::{Clipboard, Length, Point, Rectangle, Shell};  ///  /// If you want to build your own widgets, you will need to implement this  /// trait. -pub trait Widget<Message, Renderer> { +pub trait Widget<Message, Renderer> +where +    Renderer: iced_native::Renderer, +{      /// Returns the width of the [`Widget`].      fn width(&self) -> Length; @@ -75,6 +78,7 @@ pub trait Widget<Message, Renderer> {          &self,          state: &Tree,          renderer: &mut Renderer, +        theme: &Renderer::Theme,          style: &renderer::Style,          layout: Layout<'_>,          cursor_position: Point, 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()), | 
