diff options
author | 2024-02-01 01:08:21 +0100 | |
---|---|---|
committer | 2024-02-01 01:08:21 +0100 | |
commit | 738aa47547818ebf57dc4f00099386a5a22a86d5 (patch) | |
tree | 4f262c1bc4d9b55f030146ec2a6f9b6cc421a6c5 /core | |
parent | 7bbe4502170be1942c4e61d222e14401f724aa42 (diff) | |
download | iced-738aa47547818ebf57dc4f00099386a5a22a86d5.tar.gz iced-738aa47547818ebf57dc4f00099386a5a22a86d5.tar.bz2 iced-738aa47547818ebf57dc4f00099386a5a22a86d5.zip |
Remove `position` from `overlay::Element`
Diffstat (limited to 'core')
-rw-r--r-- | core/src/element.rs | 8 | ||||
-rw-r--r-- | core/src/overlay.rs | 13 | ||||
-rw-r--r-- | core/src/overlay/element.rs | 41 | ||||
-rw-r--r-- | core/src/overlay/group.rs | 16 | ||||
-rw-r--r-- | core/src/widget.rs | 3 |
5 files changed, 21 insertions, 60 deletions
diff --git a/core/src/element.rs b/core/src/element.rs index 71d0d873..8eea90ca 100644 --- a/core/src/element.rs +++ b/core/src/element.rs @@ -446,11 +446,12 @@ where tree: &'b mut Tree, layout: Layout<'_>, renderer: &Renderer, + translation: Vector, ) -> Option<overlay::Element<'b, B, Theme, Renderer>> { let mapper = &self.mapper; self.widget - .overlay(tree, layout, renderer) + .overlay(tree, layout, renderer, translation) .map(move |overlay| overlay.map(mapper)) } } @@ -596,7 +597,10 @@ where state: &'b mut Tree, layout: Layout<'_>, renderer: &Renderer, + translation: Vector, ) -> Option<overlay::Element<'b, Message, Theme, Renderer>> { - self.element.widget.overlay(state, layout, renderer) + self.element + .widget + .overlay(state, layout, renderer, translation) } } diff --git a/core/src/overlay.rs b/core/src/overlay.rs index 6b8cf2a6..03076a30 100644 --- a/core/src/overlay.rs +++ b/core/src/overlay.rs @@ -24,13 +24,7 @@ where /// user interface. /// /// [`Node`]: layout::Node - fn layout( - &mut self, - renderer: &Renderer, - bounds: Size, - position: Point, - translation: Vector, - ) -> layout::Node; + fn layout(&mut self, renderer: &Renderer, bounds: Size) -> layout::Node; /// Draws the [`Overlay`] using the associated `Renderer`. fn draw( @@ -120,6 +114,7 @@ pub fn from_children<'a, Message, Theme, Renderer>( tree: &'a mut Tree, layout: Layout<'_>, renderer: &Renderer, + translation: Vector, ) -> Option<Element<'a, Message, Theme, Renderer>> where Renderer: crate::Renderer, @@ -129,7 +124,9 @@ where .zip(&mut tree.children) .zip(layout.children()) .filter_map(|((child, state), layout)| { - child.as_widget_mut().overlay(state, layout, renderer) + child + .as_widget_mut() + .overlay(state, layout, renderer, translation) }) .collect::<Vec<_>>(); diff --git a/core/src/overlay/element.rs b/core/src/overlay/element.rs index c34ab862..695b88b3 100644 --- a/core/src/overlay/element.rs +++ b/core/src/overlay/element.rs @@ -12,8 +12,6 @@ use std::any::Any; /// A generic [`Overlay`]. #[allow(missing_debug_implementations)] pub struct Element<'a, Message, Theme, Renderer> { - position: Point, - translation: Vector, overlay: Box<dyn Overlay<Message, Theme, Renderer> + 'a>, } @@ -23,26 +21,9 @@ where { /// Creates a new [`Element`] containing the given [`Overlay`]. pub fn new( - position: Point, overlay: Box<dyn Overlay<Message, Theme, Renderer> + 'a>, ) -> Self { - Self { - position, - overlay, - translation: Vector::ZERO, - } - } - - /// Returns the position of the [`Element`]. - pub fn position(&self) -> Point { - self.position - } - - /// Translates the [`Element`]. - pub fn translate(mut self, translation: Vector) -> Self { - self.position = self.position + translation; - self.translation = self.translation + translation; - self + Self { overlay } } /// Applies a transformation to the produced message of the [`Element`]. @@ -57,8 +38,6 @@ where B: 'a, { Element { - position: self.position, - translation: self.translation, overlay: Box::new(Map::new(self.overlay, f)), } } @@ -68,14 +47,8 @@ where &mut self, renderer: &Renderer, bounds: Size, - translation: Vector, ) -> layout::Node { - self.overlay.layout( - renderer, - bounds, - self.position + translation, - self.translation + translation, - ) + self.overlay.layout(renderer, bounds) } /// Processes a runtime [`Event`]. @@ -165,14 +138,8 @@ impl<'a, A, B, Theme, Renderer> Overlay<B, Theme, Renderer> where Renderer: crate::Renderer, { - fn layout( - &mut self, - renderer: &Renderer, - bounds: Size, - position: Point, - translation: Vector, - ) -> layout::Node { - self.content.layout(renderer, bounds, position, translation) + fn layout(&mut self, renderer: &Renderer, bounds: Size) -> layout::Node { + self.content.layout(renderer, bounds) } fn operate( diff --git a/core/src/overlay/group.rs b/core/src/overlay/group.rs index 4e54a002..7e4bebd0 100644 --- a/core/src/overlay/group.rs +++ b/core/src/overlay/group.rs @@ -4,9 +4,7 @@ use crate::mouse; use crate::overlay; use crate::renderer; use crate::widget; -use crate::{ - Clipboard, Event, Layout, Overlay, Point, Rectangle, Shell, Size, Vector, -}; +use crate::{Clipboard, Event, Layout, Overlay, Point, Rectangle, Shell, Size}; /// An [`Overlay`] container that displays multiple overlay [`overlay::Element`] /// children. @@ -44,7 +42,7 @@ where /// Turns the [`Group`] into an overlay [`overlay::Element`]. pub fn overlay(self) -> overlay::Element<'a, Message, Theme, Renderer> { - overlay::Element::new(Point::ORIGIN, Box::new(self)) + overlay::Element::new(Box::new(self)) } } @@ -65,18 +63,12 @@ impl<'a, Message, Theme, Renderer> Overlay<Message, Theme, Renderer> where Renderer: crate::Renderer, { - fn layout( - &mut self, - renderer: &Renderer, - bounds: Size, - _position: Point, - translation: Vector, - ) -> layout::Node { + fn layout(&mut self, renderer: &Renderer, bounds: Size) -> layout::Node { layout::Node::with_children( bounds, self.children .iter_mut() - .map(|child| child.layout(renderer, bounds, translation)) + .map(|child| child.layout(renderer, bounds)) .collect(), ) } diff --git a/core/src/widget.rs b/core/src/widget.rs index d5e2ec6f..51326f12 100644 --- a/core/src/widget.rs +++ b/core/src/widget.rs @@ -15,7 +15,7 @@ use crate::layout::{self, Layout}; use crate::mouse; use crate::overlay; use crate::renderer; -use crate::{Clipboard, Length, Rectangle, Shell, Size}; +use crate::{Clipboard, Length, Rectangle, Shell, Size, Vector}; /// A component that displays information and allows interaction. /// @@ -146,6 +146,7 @@ where _state: &'a mut Tree, _layout: Layout<'_>, _renderer: &Renderer, + _translation: Vector, ) -> Option<overlay::Element<'a, Message, Theme, Renderer>> { None } |