diff options
author | 2023-02-18 13:48:10 -0800 | |
---|---|---|
committer | 2023-06-14 09:25:57 +0200 | |
commit | 0a56ffb5d6260832d27c2cae70d4b8536e000001 (patch) | |
tree | e0c8397fae846fa37c0da9073d83cc0d6f9797ea /core | |
parent | 55dc3b5619392f4a20389255708c61082b3d4c1a (diff) | |
download | iced-0a56ffb5d6260832d27c2cae70d4b8536e000001.tar.gz iced-0a56ffb5d6260832d27c2cae70d4b8536e000001.tar.bz2 iced-0a56ffb5d6260832d27c2cae70d4b8536e000001.zip |
Add nested overlay method to group & map
Diffstat (limited to '')
-rw-r--r-- | core/src/overlay/element.rs | 10 | ||||
-rw-r--r-- | core/src/overlay/group.rs | 15 |
2 files changed, 25 insertions, 0 deletions
diff --git a/core/src/overlay/element.rs b/core/src/overlay/element.rs index edb1b443..c2134343 100644 --- a/core/src/overlay/element.rs +++ b/core/src/overlay/element.rs @@ -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)) + } } diff --git a/core/src/overlay/group.rs b/core/src/overlay/group.rs index 7a38222b..deffaad0 100644 --- a/core/src/overlay/group.rs +++ b/core/src/overlay/group.rs @@ -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>> |