diff options
Diffstat (limited to '')
| -rw-r--r-- | native/src/widget/checkbox.rs | 30 | 
1 files changed, 20 insertions, 10 deletions
diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index 290cb114..cedbb7d8 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -12,7 +12,7 @@ use crate::{      Widget,  }; -pub use iced_style::checkbox::{Style, StyleSheet}; +pub use iced_style::checkbox::{Appearance, StyleSheet};  /// A box that can be checked.  /// @@ -32,7 +32,11 @@ pub use iced_style::checkbox::{Style, StyleSheet};  ///  ///   #[allow(missing_debug_implementations)] -pub struct Checkbox<'a, Message, Renderer: text::Renderer> { +pub struct Checkbox<'a, Message, Renderer> +where +    Renderer: text::Renderer, +    Renderer::Theme: StyleSheet, +{      is_checked: bool,      on_toggle: Box<dyn Fn(bool) -> Message + 'a>,      label: String, @@ -41,10 +45,14 @@ pub struct Checkbox<'a, Message, Renderer: text::Renderer> {      spacing: u16,      text_size: Option<u16>,      font: Renderer::Font, -    style_sheet: Box<dyn StyleSheet + 'a>, +    style: <Renderer::Theme as StyleSheet>::Style,  } -impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> { +impl<'a, Message, Renderer> Checkbox<'a, Message, Renderer> +where +    Renderer: text::Renderer, +    Renderer::Theme: StyleSheet, +{      /// The default size of a [`Checkbox`].      const DEFAULT_SIZE: u16 = 20; @@ -72,7 +80,7 @@ impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> {              spacing: Self::DEFAULT_SPACING,              text_size: None,              font: Renderer::Font::default(), -            style_sheet: Default::default(), +            style: Default::default(),          }      } @@ -111,9 +119,9 @@ impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> {      /// Sets the style of the [`Checkbox`].      pub fn style(          mut self, -        style_sheet: impl Into<Box<dyn StyleSheet + 'a>>, +        style: impl Into<<Renderer::Theme as StyleSheet>::Style>,      ) -> Self { -        self.style_sheet = style_sheet.into(); +        self.style = style.into();          self      }  } @@ -122,6 +130,7 @@ impl<'a, Message, Renderer> Widget<Message, Renderer>      for Checkbox<'a, Message, Renderer>  where      Renderer: text::Renderer, +    Renderer::Theme: StyleSheet,  {      fn width(&self) -> Length {          self.width @@ -209,9 +218,9 @@ where          let mut children = layout.children();          let custom_style = if is_mouse_over { -            self.style_sheet.hovered(self.is_checked) +            theme.hovered(self.style, self.is_checked)          } else { -            self.style_sheet.active(self.is_checked) +            theme.active(self.style, self.is_checked)          };          { @@ -266,8 +275,9 @@ where  impl<'a, Message, Renderer> From<Checkbox<'a, Message, Renderer>>      for Element<'a, Message, Renderer>  where -    Renderer: 'a + text::Renderer,      Message: 'a, +    Renderer: 'a + text::Renderer, +    Renderer::Theme: StyleSheet,  {      fn from(          checkbox: Checkbox<'a, Message, Renderer>,  | 
