diff options
author | 2022-11-19 12:25:59 -0800 | |
---|---|---|
committer | 2022-11-29 12:17:29 -0800 | |
commit | f1ada7a803998ac3fb2c1bedc6d6650264f3e603 (patch) | |
tree | 17b503307d94ccac239f79f0fc9c3d532732be24 /lazy/src/responsive.rs | |
parent | 67420cb1e4ac8f7819ee5775c52676c6b7b58718 (diff) | |
download | iced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.tar.gz iced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.tar.bz2 iced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.zip |
Allow &mut self in overlay
Diffstat (limited to '')
-rw-r--r-- | lazy/src/responsive.rs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/lazy/src/responsive.rs b/lazy/src/responsive.rs index 0b7ae6de..5e1b5dff 100644 --- a/lazy/src/responsive.rs +++ b/lazy/src/responsive.rs @@ -235,18 +235,20 @@ where } fn overlay<'b>( - &'b self, + &'b mut self, tree: &'b mut Tree, layout: Layout<'_>, renderer: &Renderer, ) -> Option<overlay::Element<'b, Message, Renderer>> { + use std::ops::DerefMut; + let state = tree.state.downcast_ref::<State>(); let overlay = OverlayBuilder { content: self.content.borrow_mut(), tree: state.tree.borrow_mut(), types: PhantomData, - overlay_builder: |content, tree| { + overlay_builder: |content: &mut RefMut<Content<_, _>>, tree| { content.update( tree, renderer, @@ -254,16 +256,18 @@ where &self.view, ); + let Content { + element, layout, .. + } = content.deref_mut(); + let content_layout = Layout::with_offset( - layout.position() - Point::ORIGIN, - &content.layout, + layout.bounds().position() - Point::ORIGIN, + layout, ); - content.element.as_widget().overlay( - tree, - content_layout, - renderer, - ) + element + .as_widget_mut() + .overlay(tree, content_layout, renderer) }, } .build(); |