diff options
author | 2021-10-18 16:02:30 +0700 | |
---|---|---|
committer | 2021-10-18 16:02:30 +0700 | |
commit | 3140cdc4babcefc444f1c1d30eb0f5f4ed1df054 (patch) | |
tree | b3ea963a73118d5f0bfd7d875ba776ee51466f9b /native/src/widget/button.rs | |
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 'native/src/widget/button.rs')
-rw-r--r-- | native/src/widget/button.rs | 35 |
1 files changed, 12 insertions, 23 deletions
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>, |