diff --git a/core/src/overlay.rs b/core/src/overlay.rs index af9ae696..5f7ebce9 100644 --- a/core/src/overlay.rs +++ b/core/src/overlay.rs @@ -82,7 +82,7 @@ where /// Returns the nested overlay of the [`Overlay`], if there is any. fn overlay<'a>( &'a mut self, - _layout: Layout<'_>, + _layout: Layout<'a>, _renderer: &Renderer, ) -> Option> { None diff --git a/core/src/overlay/element.rs b/core/src/overlay/element.rs index cf6d7360..561a18ab 100644 --- a/core/src/overlay/element.rs +++ b/core/src/overlay/element.rs @@ -130,7 +130,7 @@ where fn overlay<'a>( &'a mut self, - layout: Layout<'_>, + layout: Layout<'a>, renderer: &Renderer, ) -> Option> { self.content diff --git a/core/src/overlay/group.rs b/core/src/overlay/group.rs index 1009e60a..145ee21d 100644 --- a/core/src/overlay/group.rs +++ b/core/src/overlay/group.rs @@ -138,7 +138,7 @@ where fn overlay<'a>( &'a mut self, - layout: Layout<'_>, + layout: Layout<'a>, renderer: &Renderer, ) -> Option> { let children = self diff --git a/runtime/src/overlay/nested.rs b/runtime/src/overlay/nested.rs index 6a154eb6..83c58804 100644 --- a/runtime/src/overlay/nested.rs +++ b/runtime/src/overlay/nested.rs @@ -42,12 +42,15 @@ where let overlay = element.as_overlay_mut(); let node = overlay.layout(renderer, bounds); - if let Some(mut nested) = - overlay.overlay(Layout::new(&node), renderer) - { + let nested_node = overlay + .overlay(Layout::new(&node), renderer) + .as_mut() + .map(|nested| recurse(nested, renderer, bounds)); + + if let Some(nested_node) = nested_node { layout::Node::with_children( node.size(), - vec![node, recurse(&mut nested, renderer, bounds)], + vec![node, nested_node], ) } else { layout::Node::with_children(node.size(), vec![node]) diff --git a/widget/src/themer.rs b/widget/src/themer.rs index f8b3cb29..693b8486 100644 --- a/widget/src/themer.rs +++ b/widget/src/themer.rs @@ -257,7 +257,7 @@ where fn overlay<'b>( &'b mut self, - layout: Layout<'_>, + layout: Layout<'b>, renderer: &Renderer, ) -> Option> {