From 03b34931383e701c39c653a7662a616fe21a0947 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 14 Oct 2021 16:07:22 +0700 Subject: Remove trait-specific draw logic in `iced_native` --- native/src/overlay/element.rs | 4 +-- native/src/overlay/menu.rs | 79 ++++++++++++------------------------------- 2 files changed, 24 insertions(+), 59 deletions(-) (limited to 'native/src/overlay') diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs index e4819037..081b62ce 100644 --- a/native/src/overlay/element.rs +++ b/native/src/overlay/element.rs @@ -74,7 +74,7 @@ where defaults: &Renderer::Defaults, layout: Layout<'_>, cursor_position: Point, - ) -> Renderer::Output { + ) { self.overlay .draw(renderer, defaults, layout, cursor_position) } @@ -145,7 +145,7 @@ where defaults: &Renderer::Defaults, layout: Layout<'_>, cursor_position: Point, - ) -> Renderer::Output { + ) { self.content .draw(renderer, defaults, layout, cursor_position) } diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index f62dcb46..f90a9f7b 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -239,21 +239,22 @@ where defaults: &Renderer::Defaults, layout: Layout<'_>, cursor_position: Point, - ) -> Renderer::Output { - let primitives = self.container.draw( - renderer, - defaults, - layout, - cursor_position, - &layout.bounds(), - ); - - renderer.decorate( - layout.bounds(), - cursor_position, - &self.style, - primitives, - ) + ) { + // TODO + // let primitives = self.container.draw( + // renderer, + // defaults, + // layout, + // cursor_position, + // &layout.bounds(), + // ); + + // renderer.decorate( + // layout.bounds(), + // cursor_position, + // &self.style, + // primitives, + // ) } } @@ -378,24 +379,13 @@ where fn draw( &self, - renderer: &mut Renderer, + _renderer: &mut Renderer, _defaults: &Renderer::Defaults, - layout: Layout<'_>, - cursor_position: Point, - viewport: &Rectangle, - ) -> Renderer::Output { - self::Renderer::draw( - renderer, - layout.bounds(), - cursor_position, - viewport, - self.options, - *self.hovered_option, - self.padding, - self.text_size.unwrap_or(renderer.default_size()), - self.font, - &self.style, - ) + _layout: Layout<'_>, + _cursor_position: Point, + _viewport: &Rectangle, + ) { + // TODO } } @@ -410,31 +400,6 @@ pub trait Renderer: { /// The [`Menu`] style supported by this renderer. type Style: Default + Clone; - - /// Decorates a the list of options of a [`Menu`]. - /// - /// This method can be used to draw a background for the [`Menu`]. - fn decorate( - &mut self, - bounds: Rectangle, - cursor_position: Point, - style: &::Style, - primitive: Self::Output, - ) -> Self::Output; - - /// Draws the list of options of a [`Menu`]. - fn draw( - &mut self, - bounds: Rectangle, - cursor_position: Point, - viewport: &Rectangle, - options: &[T], - hovered_option: Option, - padding: Padding, - text_size: u16, - font: Self::Font, - style: &::Style, - ) -> Self::Output; } impl<'a, T, Message, Renderer> Into> -- cgit From 54a9a232f8110364972a8eef966b7b7477573f4f Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 18 Oct 2021 14:48:33 +0700 Subject: Draw scrollbar in `Widget::draw` for `Scrollable` --- native/src/overlay/menu.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'native/src/overlay') diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index f90a9f7b..c4f64f85 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -395,9 +395,7 @@ where /// able to use a [`Menu`] in your user interface. /// /// [renderer]: crate::renderer -pub trait Renderer: - scrollable::Renderer + container::Renderer + text::Renderer -{ +pub trait Renderer: container::Renderer + text::Renderer { /// The [`Menu`] style supported by this renderer. type Style: Default + Clone; } -- cgit From edea093350e1b576e2b7db50c525e7fa5c3bea9f Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 18 Oct 2021 15:19:04 +0700 Subject: Move `Defaults` from `iced_graphics` to `iced_native` --- native/src/overlay/element.rs | 11 +++++------ native/src/overlay/menu.rs | 5 +++-- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'native/src/overlay') diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs index 081b62ce..bf3fb3f0 100644 --- a/native/src/overlay/element.rs +++ b/native/src/overlay/element.rs @@ -2,6 +2,7 @@ pub use crate::Overlay; use crate::event::{self, Event}; use crate::layout; +use crate::renderer; use crate::{Clipboard, Hasher, Layout, Point, Size, Vector}; /// A generic [`Overlay`]. @@ -71,12 +72,11 @@ where pub fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, ) { - self.overlay - .draw(renderer, defaults, layout, cursor_position) + self.overlay.draw(renderer, style, layout, cursor_position) } /// Computes the _layout_ hash of the [`Element`]. @@ -142,12 +142,11 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, ) { - self.content - .draw(renderer, defaults, layout, cursor_position) + self.content.draw(renderer, style, layout, cursor_position) } fn hash_layout(&self, state: &mut Hasher, position: Point) { diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index c4f64f85..f2367ae7 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -4,6 +4,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::mouse; use crate::overlay; +use crate::renderer; use crate::scrollable; use crate::text; use crate::touch; @@ -236,7 +237,7 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, ) { @@ -380,7 +381,7 @@ where fn draw( &self, _renderer: &mut Renderer, - _defaults: &Renderer::Defaults, + _style: &renderer::Style, _layout: Layout<'_>, _cursor_position: Point, _viewport: &Rectangle, -- cgit From d61cb58d92b6fcd520f665deb093f3747ffd5e5c Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 18 Oct 2021 15:36:32 +0700 Subject: Wire up `container` styling to `iced_native` --- native/src/overlay/menu.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'native/src/overlay') 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; } -- cgit From be97a5d502df8c8b23704f5a8a0d425f4eff2215 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 18 Oct 2021 16:43:18 +0700 Subject: Introduce `mouse_interaction` method to `Widget` trait --- native/src/overlay/element.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'native/src/overlay') diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs index bf3fb3f0..988cca09 100644 --- a/native/src/overlay/element.rs +++ b/native/src/overlay/element.rs @@ -2,8 +2,9 @@ pub use crate::Overlay; use crate::event::{self, Event}; use crate::layout; +use crate::mouse; use crate::renderer; -use crate::{Clipboard, Hasher, Layout, Point, Size, Vector}; +use crate::{Clipboard, Hasher, Layout, Point, Rectangle, Size, Vector}; /// A generic [`Overlay`]. #[allow(missing_debug_implementations)] @@ -68,6 +69,16 @@ where ) } + pub fn mouse_interaction( + &self, + layout: Layout<'_>, + viewport: &Rectangle, + cursor_position: Point, + ) -> mouse::Interaction { + self.overlay + .mouse_interaction(layout, viewport, cursor_position) + } + /// Draws the [`Element`] and its children using the given [`Layout`]. pub fn draw( &self, -- cgit From e914888f57394e4b67b40e42f1ad9df4ae8147e6 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 20 Oct 2021 18:40:39 +0700 Subject: Implement `Widget::draw` for `TextInput` --- native/src/overlay/menu.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'native/src/overlay') diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index a6527a8d..0c335bb6 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -395,7 +395,7 @@ where /// able to use a [`Menu`] in your user interface. /// /// [renderer]: crate::renderer -pub trait Renderer: text::Renderer { +pub trait Renderer: renderer::Text { /// The [`Menu`] style supported by this renderer. type Style: Default + Clone; } -- cgit From fe4dfeafdbc8f427bd351f394d27f606a3843b44 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 28 Oct 2021 15:41:12 +0700 Subject: Wire up style to `PickList` and `overlay::Menu` --- native/src/overlay/menu.rs | 43 +++++++++++++++---------------------------- 1 file changed, 15 insertions(+), 28 deletions(-) (limited to 'native/src/overlay') diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index 0c335bb6..ebb2a4e1 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -5,16 +5,17 @@ use crate::mouse; use crate::overlay; use crate::renderer; use crate::scrollable; -use crate::text; use crate::touch; use crate::{ Clipboard, Container, Element, Hasher, Layout, Length, Padding, Point, Rectangle, Scrollable, Size, Vector, Widget, }; +pub use iced_style::menu::Style; + /// A list of selectable options. #[allow(missing_debug_implementations)] -pub struct Menu<'a, T, Renderer: self::Renderer> { +pub struct Menu<'a, T, Renderer: renderer::Text> { state: &'a mut State, options: &'a [T], hovered_option: &'a mut Option, @@ -23,13 +24,13 @@ pub struct Menu<'a, T, Renderer: self::Renderer> { padding: Padding, text_size: Option, font: Renderer::Font, - style: ::Style, + style: Style, } impl<'a, T, Renderer> Menu<'a, T, Renderer> where T: ToString + Clone, - Renderer: self::Renderer + 'a, + Renderer: renderer::Text + 'a, { /// Creates a new [`Menu`] with the given [`State`], a list of options, and /// the message to produced when an option is selected. @@ -77,10 +78,7 @@ where } /// Sets the style of the [`Menu`]. - pub fn style( - mut self, - style: impl Into<::Style>, - ) -> Self { + pub fn style(mut self, style: impl Into