Allow Overlay::overlay to borrow Layout

This commit is contained in:
Héctor Ramón Jiménez 2025-05-15 16:32:49 +02:00
parent 346ce61b5d
commit 6155100767
No known key found for this signature in database
GPG key ID: 4C07CEC81AFA161F
5 changed files with 11 additions and 8 deletions

View file

@ -82,7 +82,7 @@ where
/// Returns the nested overlay of the [`Overlay`], if there is any. /// Returns the nested overlay of the [`Overlay`], if there is any.
fn overlay<'a>( fn overlay<'a>(
&'a mut self, &'a mut self,
_layout: Layout<'_>, _layout: Layout<'a>,
_renderer: &Renderer, _renderer: &Renderer,
) -> Option<Element<'a, Message, Theme, Renderer>> { ) -> Option<Element<'a, Message, Theme, Renderer>> {
None None

View file

@ -130,7 +130,7 @@ where
fn overlay<'a>( fn overlay<'a>(
&'a mut self, &'a mut self,
layout: Layout<'_>, layout: Layout<'a>,
renderer: &Renderer, renderer: &Renderer,
) -> Option<Element<'a, B, Theme, Renderer>> { ) -> Option<Element<'a, B, Theme, Renderer>> {
self.content self.content

View file

@ -138,7 +138,7 @@ where
fn overlay<'a>( fn overlay<'a>(
&'a mut self, &'a mut self,
layout: Layout<'_>, layout: Layout<'a>,
renderer: &Renderer, renderer: &Renderer,
) -> Option<overlay::Element<'a, Message, Theme, Renderer>> { ) -> Option<overlay::Element<'a, Message, Theme, Renderer>> {
let children = self let children = self

View file

@ -42,12 +42,15 @@ where
let overlay = element.as_overlay_mut(); let overlay = element.as_overlay_mut();
let node = overlay.layout(renderer, bounds); let node = overlay.layout(renderer, bounds);
if let Some(mut nested) = let nested_node = overlay
overlay.overlay(Layout::new(&node), renderer) .overlay(Layout::new(&node), renderer)
{ .as_mut()
.map(|nested| recurse(nested, renderer, bounds));
if let Some(nested_node) = nested_node {
layout::Node::with_children( layout::Node::with_children(
node.size(), node.size(),
vec![node, recurse(&mut nested, renderer, bounds)], vec![node, nested_node],
) )
} else { } else {
layout::Node::with_children(node.size(), vec![node]) layout::Node::with_children(node.size(), vec![node])

View file

@ -257,7 +257,7 @@ where
fn overlay<'b>( fn overlay<'b>(
&'b mut self, &'b mut self,
layout: Layout<'_>, layout: Layout<'b>,
renderer: &Renderer, renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Theme, Renderer>> ) -> Option<overlay::Element<'b, Message, Theme, Renderer>>
{ {