diff options
author | 2024-02-01 01:08:21 +0100 | |
---|---|---|
committer | 2024-02-01 01:08:21 +0100 | |
commit | 738aa47547818ebf57dc4f00099386a5a22a86d5 (patch) | |
tree | 4f262c1bc4d9b55f030146ec2a6f9b6cc421a6c5 /widget/src/overlay | |
parent | 7bbe4502170be1942c4e61d222e14401f724aa42 (diff) | |
download | iced-738aa47547818ebf57dc4f00099386a5a22a86d5.tar.gz iced-738aa47547818ebf57dc4f00099386a5a22a86d5.tar.bz2 iced-738aa47547818ebf57dc4f00099386a5a22a86d5.zip |
Remove `position` from `overlay::Element`
Diffstat (limited to 'widget/src/overlay')
-rw-r--r-- | widget/src/overlay/menu.rs | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/widget/src/overlay/menu.rs b/widget/src/overlay/menu.rs index a7b7ec94..8a4d6a98 100644 --- a/widget/src/overlay/menu.rs +++ b/widget/src/overlay/menu.rs @@ -134,10 +134,11 @@ where position: Point, target_height: f32, ) -> overlay::Element<'a, Message, Theme, Renderer> { - overlay::Element::new( + overlay::Element::new(Box::new(Overlay::new( position, - Box::new(Overlay::new(self, target_height)), - ) + self, + target_height, + ))) } } @@ -167,6 +168,7 @@ where Theme: StyleSheet + container::StyleSheet, Renderer: crate::core::Renderer, { + position: Point, state: &'a mut Tree, container: Container<'a, Message, Theme, Renderer>, width: f32, @@ -181,6 +183,7 @@ where Renderer: text::Renderer + 'a, { pub fn new<T>( + position: Point, menu: Menu<'a, T, Message, Theme, Renderer>, target_height: f32, ) -> Self @@ -218,6 +221,7 @@ where state.tree.diff(&container as &dyn Widget<_, _, _>); Self { + position, state: &mut state.tree, container, width, @@ -234,20 +238,15 @@ where Theme: StyleSheet + container::StyleSheet, Renderer: text::Renderer, { - fn layout( - &mut self, - renderer: &Renderer, - bounds: Size, - position: Point, - _translation: Vector, - ) -> layout::Node { - let space_below = bounds.height - (position.y + self.target_height); - let space_above = position.y; + fn layout(&mut self, renderer: &Renderer, bounds: Size) -> layout::Node { + let space_below = + bounds.height - (self.position.y + self.target_height); + let space_above = self.position.y; let limits = layout::Limits::new( Size::ZERO, Size::new( - bounds.width - position.x, + bounds.width - self.position.x, if space_below > space_above { space_below } else { @@ -261,9 +260,9 @@ where let size = node.size(); node.move_to(if space_below > space_above { - position + Vector::new(0.0, self.target_height) + self.position + Vector::new(0.0, self.target_height) } else { - position - Vector::new(0.0, size.height) + self.position - Vector::new(0.0, size.height) }) } |