diff options
| author | 2020-07-05 05:44:10 +0200 | |
|---|---|---|
| committer | 2020-07-08 11:29:19 +0200 | |
| commit | 625979b6652a8a14a0eaf6bd62f1e9a8da0ae421 (patch) | |
| tree | 0ed6994fc2ff0a8671bb6ec26bdae21af2b6fb23 /native/src/element.rs | |
| parent | 61f22b1db23f3495145a9a4f7255311fe8381998 (diff) | |
| download | iced-625979b6652a8a14a0eaf6bd62f1e9a8da0ae421.tar.gz iced-625979b6652a8a14a0eaf6bd62f1e9a8da0ae421.tar.bz2 iced-625979b6652a8a14a0eaf6bd62f1e9a8da0ae421.zip | |
Draft `Widget::overlay` idempotency
Diffstat (limited to 'native/src/element.rs')
| -rw-r--r-- | native/src/element.rs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/native/src/element.rs b/native/src/element.rs index c881871a..b00f9e55 100644 --- a/native/src/element.rs +++ b/native/src/element.rs @@ -273,10 +273,10 @@ where self.widget.hash_layout(state); } - pub fn overlay( - &mut self, + pub fn overlay<'b>( + &'b mut self, layout: Layout<'_>, - ) -> Option<Overlay<'a, Message, Renderer>> { + ) -> Option<Overlay<'b, Message, Renderer>> { self.widget.overlay(layout) } } @@ -366,10 +366,12 @@ where fn overlay( &mut self, layout: Layout<'_>, - ) -> Option<Overlay<'a, B, Renderer>> { + ) -> Option<Overlay<'_, B, Renderer>> { + let mapper = self.mapper.clone(); + self.widget .overlay(layout) - .map(|overlay| overlay.map(self.mapper.clone())) + .map(move |overlay| overlay.map(mapper)) } } @@ -450,7 +452,7 @@ where fn overlay( &mut self, layout: Layout<'_>, - ) -> Option<Overlay<'a, Message, Renderer>> { + ) -> Option<Overlay<'_, Message, Renderer>> { self.element.overlay(layout) } } |
