diff options
-rw-r--r-- | pure/src/element.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/pure/src/element.rs b/pure/src/element.rs index 3d5697fe..e6812c0e 100644 --- a/pure/src/element.rs +++ b/pure/src/element.rs @@ -1,3 +1,4 @@ +use crate::overlay; use crate::widget::tree::{self, Tree}; use crate::widget::Widget; @@ -33,7 +34,7 @@ impl<'a, Message, Renderer> Element<'a, Message, Renderer> { where Message: 'a, Renderer: iced_native::Renderer + 'a, - B: 'a, + B: 'static, { Element::new(Map::new(self.widget, f)) } @@ -63,7 +64,7 @@ impl<'a, A, B, Renderer> Widget<B, Renderer> for Map<'a, A, B, Renderer> where Renderer: iced_native::Renderer + 'a, A: 'a, - B: 'a, + B: 'static, { fn tag(&self) -> tree::Tag { self.widget.tag() @@ -160,4 +161,17 @@ where renderer, ) } + + fn overlay<'b>( + &'b self, + tree: &'b mut Tree, + layout: Layout<'_>, + renderer: &Renderer, + ) -> Option<overlay::Element<'b, B, Renderer>> { + let mapper = &self.mapper; + + self.widget + .overlay(tree, layout, renderer) + .map(move |overlay| overlay.map(mapper)) + } } |