summaryrefslogtreecommitdiffstats
path: root/lazy/src/component.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/component.rs
parent67420cb1e4ac8f7819ee5775c52676c6b7b58718 (diff)
downloadiced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.tar.gz
iced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.tar.bz2
iced-f1ada7a803998ac3fb2c1bedc6d6650264f3e603.zip
Allow &mut self in overlay
Diffstat (limited to 'lazy/src/component.rs')
-rw-r--r--lazy/src/component.rs31
1 files changed, 13 insertions, 18 deletions
diff --git a/lazy/src/component.rs b/lazy/src/component.rs
index 4f1df650..3d7b8758 100644
--- a/lazy/src/component.rs
+++ b/lazy/src/component.rs
@@ -11,7 +11,7 @@ use iced_native::{
};
use ouroboros::self_referencing;
-use std::cell::{Ref, RefCell};
+use std::cell::RefCell;
use std::marker::PhantomData;
/// A reusable, custom widget that uses The Elm Architecture.
@@ -322,25 +322,25 @@ where
}
fn overlay<'b>(
- &'b self,
+ &'b mut self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
let overlay = OverlayBuilder {
instance: self,
- instance_ref_builder: |instance| instance.state.borrow(),
tree,
types: PhantomData,
overlay_builder: |instance, tree| {
- instance
- .as_ref()
- .unwrap()
- .borrow_element()
- .as_ref()
- .unwrap()
- .as_widget()
- .overlay(&mut tree.children[0], layout, renderer)
+ instance.state.get_mut().as_mut().unwrap().with_element_mut(
+ move |element| {
+ element.as_mut().unwrap().as_widget_mut().overlay(
+ &mut tree.children[0],
+ layout,
+ renderer,
+ )
+ },
+ )
},
}
.build();
@@ -362,15 +362,11 @@ where
#[self_referencing]
struct Overlay<'a, 'b, Message, Renderer, Event, S> {
- instance: &'a Instance<'b, Message, Renderer, Event, S>,
+ instance: &'a mut Instance<'b, Message, Renderer, Event, S>,
tree: &'a mut Tree,
types: PhantomData<(Message, Event, S)>,
- #[borrows(instance)]
- #[covariant]
- instance_ref: Ref<'this, Option<State<'a, Message, Renderer, Event, S>>>,
-
- #[borrows(instance_ref, mut tree)]
+ #[borrows(mut instance, mut tree)]
#[covariant]
overlay: Option<overlay::Element<'this, Event, Renderer>>,
}
@@ -514,7 +510,6 @@ where
self.overlay = Some(
OverlayBuilder {
instance: overlay.instance,
- instance_ref_builder: |instance| instance.state.borrow(),
tree: overlay.tree,
types: PhantomData,
overlay_builder: |_, _| None,