summaryrefslogtreecommitdiffstats
path: root/lazy/src/responsive.rs
diff options
context:
space:
mode:
authorLibravatar tarkah <cforsstrom18@gmail.com>2022-11-19 12:25:59 -0800
committerLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2022-11-29 12:17:29 -0800
commitf1ada7a803998ac3fb2c1bedc6d6650264f3e603 (patch)
tree17b503307d94ccac239f79f0fc9c3d532732be24 /lazy/src/responsive.rs
parent67420cb1e4ac8f7819ee5775c52676c6b7b58718 (diff)
downloadiced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.tar.gz
iced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.tar.bz2
iced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.zip
Allow &mut self in overlay
Diffstat (limited to '')
-rw-r--r--lazy/src/responsive.rs22
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();