Add nested overlay method to group & map

This commit is contained in:
Cory Forsstrom 2023-02-18 13:48:10 -08:00 committed by Héctor Ramón Jiménez
parent 55dc3b5619
commit 0a56ffb5d6
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
2 changed files with 25 additions and 0 deletions

View file

@ -270,4 +270,14 @@ where
) -> bool {
self.content.is_over(layout, renderer, cursor_position)
}
fn overlay<'b>(
&'b mut self,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<Element<'b, B, Renderer>> {
self.content
.overlay(layout, renderer)
.map(|overlay| overlay.map(self.mapper))
}
}

View file

@ -160,6 +160,21 @@ where
child.is_over(layout, renderer, cursor_position)
})
}
fn overlay<'b>(
&'b mut self,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
let children = self
.children
.iter_mut()
.zip(layout.children())
.filter_map(|(child, layout)| child.overlay(layout, renderer))
.collect::<Vec<_>>();
(!children.is_empty()).then(|| Group::with_children(children).overlay())
}
}
impl<'a, Message, Renderer> From<Group<'a, Message, Renderer>>