summaryrefslogtreecommitdiffstats
path: root/lazy
diff options
context:
space:
mode:
authorLibravatar Nick Senger <nicks@lich.io>2022-04-06 17:18:43 -0700
committerLibravatar Nick Senger <nicks@lich.io>2022-04-06 17:25:57 -0700
commitd23ed0c4e8296687292d3e7f97fdc8707205cefe (patch)
treef73b72646ef935ce2b63844ccd1c9f0a96c22c5d /lazy
parentc663a8d85cd90805de65b2d90226dbb7cbfac364 (diff)
downloadiced-d23ed0c4e8296687292d3e7f97fdc8707205cefe.tar.gz
iced-d23ed0c4e8296687292d3e7f97fdc8707205cefe.tar.bz2
iced-d23ed0c4e8296687292d3e7f97fdc8707205cefe.zip
fix: overlay
Diffstat (limited to 'lazy')
-rw-r--r--lazy/src/pure/component.rs28
1 files changed, 14 insertions, 14 deletions
diff --git a/lazy/src/pure/component.rs b/lazy/src/pure/component.rs
index bd98aa8c..21458c4d 100644
--- a/lazy/src/pure/component.rs
+++ b/lazy/src/pure/component.rs
@@ -137,10 +137,7 @@ where
let state = S::default();
self.rebuild_element(&state);
- tree::State::new((
- state,
- self.with_element(|element| Tree::new(element)),
- ))
+ tree::State::new((state, self.with_element(Tree::new)))
}
fn diff(&self, tree: &mut Tree) {
@@ -275,14 +272,14 @@ where
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
- let (_, tree) = tree.state.downcast_mut::<(S, Tree)>();
-
let overlay = OverlayBuilder {
instance: self,
instance_ref_builder: |instance| instance.state.borrow(),
tree,
types: PhantomData,
overlay_builder: |instance, tree| {
+ let (_, tree) = tree.state.downcast_mut::<(S, Tree)>();
+
instance
.as_ref()
.unwrap()
@@ -436,11 +433,12 @@ where
let overlay = self.overlay.take().unwrap().into_heads();
let mut heads = overlay.instance.state.take().unwrap().into_heads();
- for message in local_messages.into_iter().filter_map(|message| {
- heads
- .component
- .update(overlay.tree.state.downcast_mut::<S>(), message)
- }) {
+ let (s, tree) = overlay.tree.state.downcast_mut::<(S, Tree)>();
+
+ for message in local_messages
+ .into_iter()
+ .filter_map(|message| heads.component.update(s, message))
+ {
shell.publish(message);
}
@@ -449,13 +447,13 @@ where
component: heads.component,
message: PhantomData,
state: PhantomData,
- element_builder: |state| {
- Some(state.view(overlay.tree.state.downcast_ref::<S>()))
- },
+ element_builder: |state| Some(state.view(s)),
}
.build(),
);
+ overlay.instance.with_element(|element| tree.diff(element));
+
self.overlay = Some(
OverlayBuilder {
instance: overlay.instance,
@@ -463,6 +461,8 @@ where
tree: overlay.tree,
types: PhantomData,
overlay_builder: |instance, tree| {
+ let (_, tree) = tree.state.downcast_mut::<(S, Tree)>();
+
instance
.as_ref()
.unwrap()