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/widget/row.rs | 44 +++++++++++--------------------------------- 1 file changed, 11 insertions(+), 33 deletions(-) (limited to 'native/src/widget/row.rs') diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index 1923f213..04a1f864 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -104,7 +104,7 @@ impl<'a, Message, Renderer> Row<'a, Message, Renderer> { impl<'a, Message, Renderer> Widget for Row<'a, Message, Renderer> where - Renderer: self::Renderer, + Renderer: crate::Renderer, { fn width(&self) -> Length { self.width @@ -168,14 +168,15 @@ where layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, - ) -> Renderer::Output { - renderer.draw( - defaults, - &self.children, - layout, - cursor_position, - viewport, - ) + ) { + // TODO + // renderer.draw( + // defaults, + // &self.children, + // layout, + // cursor_position, + // viewport, + // ) } fn hash_layout(&self, state: &mut Hasher) { @@ -207,33 +208,10 @@ where } } -/// The renderer of a [`Row`]. -/// -/// Your [renderer] will need to implement this trait before being -/// able to use a [`Row`] in your user interface. -/// -/// [renderer]: crate::renderer -pub trait Renderer: crate::Renderer + Sized { - /// Draws a [`Row`]. - /// - /// It receives: - /// - the children of the [`Row`] - /// - the [`Layout`] of the [`Row`] and its children - /// - the cursor position - fn draw( - &mut self, - defaults: &Self::Defaults, - children: &[Element<'_, Message, Self>], - layout: Layout<'_>, - cursor_position: Point, - viewport: &Rectangle, - ) -> Self::Output; -} - impl<'a, Message, Renderer> From> for Element<'a, Message, Renderer> where - Renderer: 'a + self::Renderer, + Renderer: 'a + crate::Renderer, Message: 'a, { fn from(row: Row<'a, Message, Renderer>) -> Element<'a, Message, Renderer> { -- cgit From f8895a42b05b93f28416597c8115f7b598885ddb Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 14 Oct 2021 17:05:37 +0700 Subject: Implement `Widget::draw` for `Row` --- native/src/widget/row.rs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'native/src/widget/row.rs') diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index 04a1f864..7eb5ab55 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -169,14 +169,9 @@ where cursor_position: Point, viewport: &Rectangle, ) { - // TODO - // renderer.draw( - // defaults, - // &self.children, - // layout, - // cursor_position, - // viewport, - // ) + for (child, layout) in self.children.iter().zip(layout.children()) { + child.draw(renderer, defaults, layout, cursor_position, viewport); + } } fn hash_layout(&self, state: &mut Hasher) { -- 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/widget/row.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'native/src/widget/row.rs') diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index 7eb5ab55..af63c7da 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -2,6 +2,7 @@ use crate::event::{self, Event}; use crate::layout; use crate::overlay; +use crate::renderer; use crate::{ Alignment, Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle, Widget, @@ -164,13 +165,13 @@ where fn draw( &self, renderer: &mut Renderer, - defaults: &Renderer::Defaults, + style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, viewport: &Rectangle, ) { for (child, layout) in self.children.iter().zip(layout.children()) { - child.draw(renderer, defaults, layout, cursor_position, viewport); + child.draw(renderer, style, layout, cursor_position, viewport); } } -- cgit From 14dc750149b6cfaa49ba8fe3533343e0594fc2a3 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Mon, 18 Oct 2021 16:48:39 +0700 Subject: Implement `Widget::mouse_interaction` for `Row` --- native/src/widget/row.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'native/src/widget/row.rs') diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index af63c7da..af83f106 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -1,6 +1,7 @@ //! Distribute content horizontally. use crate::event::{self, Event}; use crate::layout; +use crate::mouse; use crate::overlay; use crate::renderer; use crate::{ @@ -162,6 +163,26 @@ where .fold(event::Status::Ignored, event::Status::merge) } + fn mouse_interaction( + &self, + layout: Layout<'_>, + viewport: &Rectangle, + cursor_position: Point, + ) -> mouse::Interaction { + self.children + .iter() + .zip(layout.children()) + .map(|(child, layout)| { + child.widget.mouse_interaction( + layout, + viewport, + cursor_position, + ) + }) + .max() + .unwrap_or_default() + } + fn draw( &self, renderer: &mut Renderer, -- cgit From 631e95ee0be01dc7f5e5183e1429972aee37787f Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 2 Nov 2021 15:03:29 +0700 Subject: Move `viewport` argument to last position in `mouse_interaction` methods This keeps the order of the arguments consistent with `draw`. --- native/src/widget/row.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'native/src/widget/row.rs') diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index af83f106..6fe3284b 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -166,8 +166,8 @@ where fn mouse_interaction( &self, layout: Layout<'_>, - viewport: &Rectangle, cursor_position: Point, + viewport: &Rectangle, ) -> mouse::Interaction { self.children .iter() @@ -175,8 +175,8 @@ where .map(|(child, layout)| { child.widget.mouse_interaction( layout, - viewport, cursor_position, + viewport, ) }) .max() -- cgit