diff options
| author | 2021-10-18 16:02:30 +0700 | |
|---|---|---|
| committer | 2021-10-18 16:02:30 +0700 | |
| commit | 3140cdc4babcefc444f1c1d30eb0f5f4ed1df054 (patch) | |
| tree | b3ea963a73118d5f0bfd7d875ba776ee51466f9b /native | |
| parent | 95acc1deb89c4e75b513edb0f4d53b83c7f75b30 (diff) | |
| download | iced-3140cdc4babcefc444f1c1d30eb0f5f4ed1df054.tar.gz iced-3140cdc4babcefc444f1c1d30eb0f5f4ed1df054.tar.bz2 iced-3140cdc4babcefc444f1c1d30eb0f5f4ed1df054.zip  | |
Wire up styling to `Button` in `iced_native`
Diffstat (limited to '')
| -rw-r--r-- | native/src/renderer/null.rs | 6 | ||||
| -rw-r--r-- | native/src/widget/button.rs | 35 | 
2 files changed, 12 insertions, 29 deletions
diff --git a/native/src/renderer/null.rs b/native/src/renderer/null.rs index fdb6ea92..07023a67 100644 --- a/native/src/renderer/null.rs +++ b/native/src/renderer/null.rs @@ -90,12 +90,6 @@ impl text_input::Renderer for Null {      }  } -impl button::Renderer for Null { -    const DEFAULT_PADDING: Padding = Padding::ZERO; - -    type Style = (); -} -  impl radio::Renderer for Null {      type Style = (); diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index 2aeffd03..77148673 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -11,8 +11,11 @@ use crate::{      Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle,      Widget,  }; +  use std::hash::Hash; +pub use iced_style::button::{Style, StyleSheet}; +  /// A generic widget that produces a message when pressed.  ///  /// ``` @@ -54,7 +57,7 @@ use std::hash::Hash;  /// }  /// ```  #[allow(missing_debug_implementations)] -pub struct Button<'a, Message, Renderer: self::Renderer> { +pub struct Button<'a, Message, Renderer> {      state: &'a mut State,      content: Element<'a, Message, Renderer>,      on_press: Option<Message>, @@ -63,13 +66,13 @@ pub struct Button<'a, Message, Renderer: self::Renderer> {      min_width: u32,      min_height: u32,      padding: Padding, -    style: Renderer::Style, +    style: &'a dyn StyleSheet,  }  impl<'a, Message, Renderer> Button<'a, Message, Renderer>  where      Message: Clone, -    Renderer: self::Renderer, +    Renderer: crate::Renderer,  {      /// Creates a new [`Button`] with some local [`State`] and the given      /// content. @@ -85,8 +88,8 @@ where              height: Length::Shrink,              min_width: 0,              min_height: 0, -            padding: Renderer::DEFAULT_PADDING, -            style: Renderer::Style::default(), +            padding: Padding::new(5), +            style: Default::default(),          }      } @@ -128,8 +131,8 @@ where      }      /// Sets the style of the [`Button`]. -    pub fn style(mut self, style: impl Into<Renderer::Style>) -> Self { -        self.style = style.into(); +    pub fn style(mut self, style: &'a dyn StyleSheet) -> Self { +        self.style = style;          self      }  } @@ -151,7 +154,7 @@ impl<'a, Message, Renderer> Widget<Message, Renderer>      for Button<'a, Message, Renderer>  where      Message: Clone, -    Renderer: self::Renderer, +    Renderer: crate::Renderer,  {      fn width(&self) -> Length {          self.width @@ -268,25 +271,11 @@ where      }  } -/// The renderer of a [`Button`]. -/// -/// Your [renderer] will need to implement this trait before being -/// able to use a [`Button`] in your user interface. -/// -/// [renderer]: crate::renderer -pub trait Renderer: crate::Renderer + Sized { -    /// The default padding of a [`Button`]. -    const DEFAULT_PADDING: Padding; - -    /// The style supported by this renderer. -    type Style: Default; -} -  impl<'a, Message, Renderer> From<Button<'a, Message, Renderer>>      for Element<'a, Message, Renderer>  where      Message: 'a + Clone, -    Renderer: 'a + self::Renderer, +    Renderer: 'a + crate::Renderer,  {      fn from(          button: Button<'a, Message, Renderer>,  | 
