summaryrefslogtreecommitdiffstats
path: root/lazy/src/lazy.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2022-11-29 21:50:27 +0100
committerLibravatar GitHub <noreply@github.com>2022-11-29 21:50:27 +0100
commit23da5a32515a2eaf567d35d1b81e4b8400a27219 (patch)
tree17b503307d94ccac239f79f0fc9c3d532732be24 /lazy/src/lazy.rs
parent67420cb1e4ac8f7819ee5775c52676c6b7b58718 (diff)
parentf1ada7a803998ac3fb2c1bedc6d6650264f3e603 (diff)
downloadiced-23da5a32515a2eaf567d35d1b81e4b8400a27219.tar.gz
iced-23da5a32515a2eaf567d35d1b81e4b8400a27219.tar.bz2
iced-23da5a32515a2eaf567d35d1b81e4b8400a27219.zip
Merge pull request #1563 from tarkah/fix/overlay-mutable
Allow &mut self in overlay
Diffstat (limited to 'lazy/src/lazy.rs')
-rw-r--r--lazy/src/lazy.rs27
1 files changed, 9 insertions, 18 deletions
diff --git a/lazy/src/lazy.rs b/lazy/src/lazy.rs
index d61cc77e..2611dd10 100644
--- a/lazy/src/lazy.rs
+++ b/lazy/src/lazy.rs
@@ -207,7 +207,7 @@ where
}
fn overlay<'b>(
- &'b self,
+ &'b mut self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
@@ -216,12 +216,12 @@ where
cached: self,
tree: &mut tree.children[0],
types: PhantomData,
- element_ref_builder: |cached| cached.element.borrow(),
- element_builder: |element_ref| {
- element_ref.as_ref().unwrap().borrow()
- },
- overlay_builder: |element, tree| {
- element.as_widget().overlay(tree, layout, renderer)
+ overlay_builder: |cached, tree| {
+ Rc::get_mut(cached.element.get_mut().as_mut().unwrap())
+ .unwrap()
+ .get_mut()
+ .as_widget_mut()
+ .overlay(tree, layout, renderer)
},
}
.build();
@@ -237,20 +237,11 @@ where
#[self_referencing]
struct Overlay<'a, 'b, Message, Renderer, Dependency, View> {
- cached: &'a Lazy<'b, Message, Renderer, Dependency, View>,
+ cached: &'a mut Lazy<'b, Message, Renderer, Dependency, View>,
tree: &'a mut Tree,
types: PhantomData<(Message, Dependency, View)>,
- #[borrows(cached)]
- #[covariant]
- element_ref:
- Ref<'this, Option<Rc<RefCell<Element<'static, Message, Renderer>>>>>,
-
- #[borrows(element_ref)]
- #[covariant]
- element: Ref<'this, Element<'static, Message, Renderer>>,
-
- #[borrows(element, mut tree)]
+ #[borrows(mut cached, mut tree)]
#[covariant]
overlay: Option<overlay::Element<'this, Message, Renderer>>,
}