diff options
author | 2021-10-18 15:36:32 +0700 | |
---|---|---|
committer | 2021-10-18 15:36:32 +0700 | |
commit | d61cb58d92b6fcd520f665deb093f3747ffd5e5c (patch) | |
tree | d65fbd23f2ccbb46b18d2e3bbf214d321f6e980c /native/src | |
parent | edea093350e1b576e2b7db50c525e7fa5c3bea9f (diff) | |
download | iced-d61cb58d92b6fcd520f665deb093f3747ffd5e5c.tar.gz iced-d61cb58d92b6fcd520f665deb093f3747ffd5e5c.tar.bz2 iced-d61cb58d92b6fcd520f665deb093f3747ffd5e5c.zip |
Wire up `container` styling to `iced_native`
Diffstat (limited to 'native/src')
-rw-r--r-- | native/src/overlay/menu.rs | 3 | ||||
-rw-r--r-- | native/src/renderer/null.rs | 5 | ||||
-rw-r--r-- | native/src/widget/container.rs | 29 | ||||
-rw-r--r-- | native/src/widget/pane_grid.rs | 5 | ||||
-rw-r--r-- | native/src/widget/pane_grid/content.rs | 11 | ||||
-rw-r--r-- | native/src/widget/pane_grid/title_bar.rs | 9 | ||||
-rw-r--r-- | native/src/widget/scrollable.rs | 5 | ||||
-rw-r--r-- | native/src/widget/tooltip.rs | 16 |
8 files changed, 28 insertions, 55 deletions
diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index f2367ae7..a6527a8d 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -1,5 +1,4 @@ //! Build and show dropdown menus. -use crate::container; use crate::event::{self, Event}; use crate::layout; use crate::mouse; @@ -396,7 +395,7 @@ where /// able to use a [`Menu`] in your user interface. /// /// [renderer]: crate::renderer -pub trait Renderer: container::Renderer + text::Renderer { +pub trait Renderer: text::Renderer { /// The [`Menu`] style supported by this renderer. type Style: Default + Clone; } diff --git a/native/src/renderer/null.rs b/native/src/renderer/null.rs index 268248fd..fdb6ea92 100644 --- a/native/src/renderer/null.rs +++ b/native/src/renderer/null.rs @@ -1,6 +1,5 @@ use crate::button; use crate::checkbox; -use crate::container; use crate::pane_grid; use crate::progress_bar; use crate::radio; @@ -123,10 +122,6 @@ impl progress_bar::Renderer for Null { const DEFAULT_HEIGHT: u16 = 30; } -impl container::Renderer for Null { - type Style = (); -} - impl pane_grid::Renderer for Null { type Style = (); } diff --git a/native/src/widget/container.rs b/native/src/widget/container.rs index 92869873..99bc3d49 100644 --- a/native/src/widget/container.rs +++ b/native/src/widget/container.rs @@ -13,11 +13,13 @@ use crate::{ use std::u32; +pub use iced_style::container::{Style, StyleSheet}; + /// An element decorating some content. /// /// It is normally used for alignment purposes. #[allow(missing_debug_implementations)] -pub struct Container<'a, Message, Renderer: self::Renderer> { +pub struct Container<'a, Message, Renderer> { padding: Padding, width: Length, height: Length, @@ -25,13 +27,13 @@ pub struct Container<'a, Message, Renderer: self::Renderer> { max_height: u32, horizontal_alignment: alignment::Horizontal, vertical_alignment: alignment::Vertical, - style: Renderer::Style, + style: &'a dyn StyleSheet, content: Element<'a, Message, Renderer>, } impl<'a, Message, Renderer> Container<'a, Message, Renderer> where - Renderer: self::Renderer, + Renderer: crate::Renderer, { /// Creates an empty [`Container`]. pub fn new<T>(content: T) -> Self @@ -46,7 +48,7 @@ where max_height: u32::MAX, horizontal_alignment: alignment::Horizontal::Left, vertical_alignment: alignment::Vertical::Top, - style: Renderer::Style::default(), + style: Default::default(), content: content.into(), } } @@ -106,8 +108,8 @@ where } /// Sets the style of the [`Container`]. - 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 } } @@ -115,7 +117,7 @@ where impl<'a, Message, Renderer> Widget<Message, Renderer> for Container<'a, Message, Renderer> where - Renderer: self::Renderer, + Renderer: crate::Renderer, { fn width(&self) -> Length { self.width @@ -211,21 +213,10 @@ where } } -/// The renderer of a [`Container`]. -/// -/// Your [renderer] will need to implement this trait before being -/// able to use a [`Container`] in your user interface. -/// -/// [renderer]: crate::renderer -pub trait Renderer: crate::Renderer { - /// The style supported by this renderer. - type Style: Default; -} - impl<'a, Message, Renderer> From<Container<'a, Message, Renderer>> for Element<'a, Message, Renderer> where - Renderer: 'a + self::Renderer, + Renderer: 'a + crate::Renderer, Message: 'a, { fn from( diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs index 1e63fdeb..afecd681 100644 --- a/native/src/widget/pane_grid.rs +++ b/native/src/widget/pane_grid.rs @@ -27,7 +27,6 @@ pub use split::Split; pub use state::State; pub use title_bar::TitleBar; -use crate::container; use crate::event::{self, Event}; use crate::layout; use crate::mouse; @@ -318,7 +317,7 @@ pub struct ResizeEvent { impl<'a, Message, Renderer> Widget<Message, Renderer> for PaneGrid<'a, Message, Renderer> where - Renderer: self::Renderer + container::Renderer, + Renderer: self::Renderer, { fn width(&self) -> Length { self.width @@ -565,7 +564,7 @@ where /// able to use a [`PaneGrid`] in your user interface. /// /// [renderer]: crate::renderer -pub trait Renderer: crate::Renderer + container::Renderer + Sized { +pub trait Renderer: crate::Renderer + Sized { /// The style supported by this renderer. type Style: Default; } diff --git a/native/src/widget/pane_grid/content.rs b/native/src/widget/pane_grid/content.rs index 22b3a310..7858c15d 100644 --- a/native/src/widget/pane_grid/content.rs +++ b/native/src/widget/pane_grid/content.rs @@ -13,7 +13,7 @@ use crate::{Clipboard, Element, Hasher, Layout, Point, Rectangle, Size}; pub struct Content<'a, Message, Renderer: pane_grid::Renderer> { title_bar: Option<TitleBar<'a, Message, Renderer>>, body: Element<'a, Message, Renderer>, - style: <Renderer as container::Renderer>::Style, + style: &'a dyn container::StyleSheet, } impl<'a, Message, Renderer> Content<'a, Message, Renderer> @@ -39,11 +39,8 @@ where } /// Sets the style of the [`Content`]. - pub fn style( - mut self, - style: impl Into<<Renderer as container::Renderer>::Style>, - ) -> Self { - self.style = style.into(); + pub fn style(mut self, style: &'a dyn container::StyleSheet) -> Self { + self.style = style; self } } @@ -217,7 +214,7 @@ where impl<'a, T, Message, Renderer> From<T> for Content<'a, Message, Renderer> where T: Into<Element<'a, Message, Renderer>>, - Renderer: pane_grid::Renderer + container::Renderer, + Renderer: pane_grid::Renderer, { fn from(element: T) -> Self { Self::new(element) diff --git a/native/src/widget/pane_grid/title_bar.rs b/native/src/widget/pane_grid/title_bar.rs index ce9249d2..22d3a9eb 100644 --- a/native/src/widget/pane_grid/title_bar.rs +++ b/native/src/widget/pane_grid/title_bar.rs @@ -17,7 +17,7 @@ pub struct TitleBar<'a, Message, Renderer: pane_grid::Renderer> { controls: Option<Element<'a, Message, Renderer>>, padding: Padding, always_show_controls: bool, - style: <Renderer as container::Renderer>::Style, + style: &'a dyn container::StyleSheet, } impl<'a, Message, Renderer> TitleBar<'a, Message, Renderer> @@ -54,11 +54,8 @@ where } /// Sets the style of the [`TitleBar`]. - pub fn style( - mut self, - style: impl Into<<Renderer as container::Renderer>::Style>, - ) -> Self { - self.style = style.into(); + pub fn style(mut self, style: &'a dyn container::StyleSheet) -> Self { + self.style = style; self } diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs index 63da539f..ac5b3e4f 100644 --- a/native/src/widget/scrollable.rs +++ b/native/src/widget/scrollable.rs @@ -122,10 +122,7 @@ impl<'a, Message, Renderer: crate::Renderer> Scrollable<'a, Message, Renderer> { } /// Sets the style of the [`Scrollable`] . - pub fn style<'b>(mut self, style_sheet: &'b dyn StyleSheet) -> Self - where - 'b: 'a, - { + pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self { self.style_sheet = style_sheet; self } diff --git a/native/src/widget/tooltip.rs b/native/src/widget/tooltip.rs index 496cd41e..4e8483ad 100644 --- a/native/src/widget/tooltip.rs +++ b/native/src/widget/tooltip.rs @@ -16,7 +16,7 @@ pub struct Tooltip<'a, Message, Renderer: self::Renderer> { content: Element<'a, Message, Renderer>, tooltip: Text<Renderer>, position: Position, - style: <Renderer as container::Renderer>::Style, + style: &'a dyn container::StyleSheet, gap: u16, padding: u16, } @@ -70,11 +70,11 @@ where } /// Sets the style of the [`Tooltip`]. - pub fn style( - mut self, - style: impl Into<<Renderer as container::Renderer>::Style>, - ) -> Self { - self.style = style.into(); + pub fn style<'b>(mut self, style: &'b dyn container::StyleSheet) -> Self + where + 'b: 'a, + { + self.style = style; self } } @@ -160,9 +160,7 @@ where /// /// [`Tooltip`]: struct.Tooltip.html /// [renderer]: ../../renderer/index.html -pub trait Renderer: - crate::Renderer + text::Renderer + container::Renderer -{ +pub trait Renderer: crate::Renderer + text::Renderer { /// The default padding of a [`Tooltip`] drawn by this renderer. const DEFAULT_PADDING: u16; } |