From a50cc32d09ddff1d061701074908c28d5c5509ba Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez <hector0193@gmail.com> Date: Mon, 30 Jan 2023 05:01:28 +0100 Subject: Fix layout translation in `overlay::Group` This bug produced improper positioning of overlays of elements inside a `Scrollable`. --- native/src/overlay/element.rs | 10 ++++++++-- native/src/overlay/group.rs | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'native/src/overlay') diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs index bdf7766e..237d25d1 100644 --- a/native/src/overlay/element.rs +++ b/native/src/overlay/element.rs @@ -53,8 +53,14 @@ where } /// Computes the layout of the [`Element`] in the given bounds. - pub fn layout(&self, renderer: &Renderer, bounds: Size) -> layout::Node { - self.overlay.layout(renderer, bounds, self.position) + pub fn layout( + &self, + renderer: &Renderer, + bounds: Size, + translation: Vector, + ) -> layout::Node { + self.overlay + .layout(renderer, bounds, self.position + translation) } /// Processes a runtime [`Event`]. diff --git a/native/src/overlay/group.rs b/native/src/overlay/group.rs index 5c9cf809..1126f0cf 100644 --- a/native/src/overlay/group.rs +++ b/native/src/overlay/group.rs @@ -66,13 +66,15 @@ where &self, renderer: &Renderer, bounds: Size, - _position: Point, + position: Point, ) -> layout::Node { + let translation = position - Point::ORIGIN; + layout::Node::with_children( bounds, self.children .iter() - .map(|child| child.layout(renderer, bounds)) + .map(|child| child.layout(renderer, bounds, translation)) .collect(), ) } -- cgit