summaryrefslogtreecommitdiffstats
path: root/core/src/overlay
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/overlay')
-rw-r--r--core/src/overlay/element.rs10
-rw-r--r--core/src/overlay/group.rs15
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>>