summaryrefslogtreecommitdiffstats
path: root/core/src
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-01 01:08:21 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-01 01:08:21 +0100
commit738aa47547818ebf57dc4f00099386a5a22a86d5 (patch)
tree4f262c1bc4d9b55f030146ec2a6f9b6cc421a6c5 /core/src
parent7bbe4502170be1942c4e61d222e14401f724aa42 (diff)
downloadiced-738aa47547818ebf57dc4f00099386a5a22a86d5.tar.gz
iced-738aa47547818ebf57dc4f00099386a5a22a86d5.tar.bz2
iced-738aa47547818ebf57dc4f00099386a5a22a86d5.zip
Remove `position` from `overlay::Element`
Diffstat (limited to 'core/src')
-rw-r--r--core/src/element.rs8
-rw-r--r--core/src/overlay.rs13
-rw-r--r--core/src/overlay/element.rs41
-rw-r--r--core/src/overlay/group.rs16
-rw-r--r--core/src/widget.rs3
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
}