diff options
Diffstat (limited to '')
| -rw-r--r-- | native/src/renderer/null.rs | 3 | ||||
| -rw-r--r-- | native/src/widget/checkbox.rs | 41 | 
2 files changed, 27 insertions, 17 deletions
| diff --git a/native/src/renderer/null.rs b/native/src/renderer/null.rs index 4fb4f2d5..bd5bba23 100644 --- a/native/src/renderer/null.rs +++ b/native/src/renderer/null.rs @@ -170,6 +170,8 @@ impl radio::Renderer for Null {  }  impl checkbox::Renderer for Null { +    type Style = (); +      fn default_size(&self) -> u32 {          20      } @@ -180,6 +182,7 @@ impl checkbox::Renderer for Null {          _is_checked: bool,          _is_mouse_over: bool,          _label: Self::Output, +        _style: &Self::Style,      ) {      }  } diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index 87a7f629..13a59410 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -3,7 +3,7 @@ use std::hash::Hash;  use crate::{      input::{mouse, ButtonState}, -    layout, row, text, Align, Clipboard, Color, Element, Event, Font, Hasher, +    layout, row, text, Align, Clipboard, Element, Event, Font, Hasher,      HorizontalAlignment, Layout, Length, Point, Rectangle, Row, Text,      VerticalAlignment, Widget,  }; @@ -13,7 +13,7 @@ use crate::{  /// # Example  ///  /// ``` -/// # use iced_native::Checkbox; +/// # type Checkbox<Message> = iced_native::Checkbox<Message, iced_native::renderer::Null>;  /// #  /// pub enum Message {  ///     CheckboxToggled(bool), @@ -26,15 +26,15 @@ use crate::{  ///  ///   #[allow(missing_debug_implementations)] -pub struct Checkbox<Message> { +pub struct Checkbox<Message, Renderer: self::Renderer> {      is_checked: bool,      on_toggle: Box<dyn Fn(bool) -> Message>,      label: String, -    label_color: Option<Color>,      width: Length, +    style: Renderer::Style,  } -impl<Message> Checkbox<Message> { +impl<Message, Renderer: self::Renderer> Checkbox<Message, Renderer> {      /// Creates a new [`Checkbox`].      ///      /// It expects: @@ -53,29 +53,30 @@ impl<Message> Checkbox<Message> {              is_checked,              on_toggle: Box::new(f),              label: String::from(label), -            label_color: None,              width: Length::Fill, +            style: Renderer::Style::default(),          }      } -    /// Sets the color of the label of the [`Checkbox`]. +    /// Sets the width of the [`Checkbox`].      ///      /// [`Checkbox`]: struct.Checkbox.html -    pub fn label_color<C: Into<Color>>(mut self, color: C) -> Self { -        self.label_color = Some(color.into()); +    pub fn width(mut self, width: Length) -> Self { +        self.width = width;          self      } -    /// Sets the width of the [`Checkbox`]. +    /// Sets the style of the [`Checkbox`].      ///      /// [`Checkbox`]: struct.Checkbox.html -    pub fn width(mut self, width: Length) -> Self { -        self.width = width; +    pub fn style(mut self, style: impl Into<Renderer::Style>) -> Self { +        self.style = style.into();          self      }  } -impl<Message, Renderer> Widget<Message, Renderer> for Checkbox<Message> +impl<Message, Renderer> Widget<Message, Renderer> +    for Checkbox<Message, Renderer>  where      Renderer: self::Renderer + text::Renderer + row::Renderer,  { @@ -152,7 +153,7 @@ where              &self.label,              text::Renderer::default_size(renderer),              Font::Default, -            self.label_color, +            None,              HorizontalAlignment::Left,              VerticalAlignment::Center,          ); @@ -165,6 +166,7 @@ where              self.is_checked,              is_mouse_over,              label, +            &self.style,          )      } @@ -181,6 +183,8 @@ where  /// [`Checkbox`]: struct.Checkbox.html  /// [renderer]: ../../renderer/index.html  pub trait Renderer: crate::Renderer { +    type Style: Default; +      /// Returns the default size of a [`Checkbox`].      ///      /// [`Checkbox`]: struct.Checkbox.html @@ -201,16 +205,19 @@ pub trait Renderer: crate::Renderer {          is_checked: bool,          is_mouse_over: bool,          label: Self::Output, +        style: &Self::Style,      ) -> Self::Output;  } -impl<'a, Message, Renderer> From<Checkbox<Message>> +impl<'a, Message, Renderer> From<Checkbox<Message, Renderer>>      for Element<'a, Message, Renderer>  where -    Renderer: self::Renderer + text::Renderer + row::Renderer, +    Renderer: 'static + self::Renderer + text::Renderer + row::Renderer,      Message: 'static,  { -    fn from(checkbox: Checkbox<Message>) -> Element<'a, Message, Renderer> { +    fn from( +        checkbox: Checkbox<Message, Renderer>, +    ) -> Element<'a, Message, Renderer> {          Element::new(checkbox)      }  } | 
