summaryrefslogtreecommitdiffstats
path: root/lazy/src/responsive.rs
diff options
context:
space:
mode:
authorLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2023-04-17 18:40:41 -0700
committerLibravatar Cory Forsstrom <cforsstrom18@gmail.com>2023-04-17 18:42:13 -0700
commitac7b77f59c720bdb618057df0435fa1170d9c84a (patch)
tree28f7c53c7c6780a68b571fe7d54ef871691003d0 /lazy/src/responsive.rs
parent07dfebfec00b29ef84a1624ac942bb433628eff6 (diff)
downloadiced-ac7b77f59c720bdb618057df0435fa1170d9c84a.tar.gz
iced-ac7b77f59c720bdb618057df0435fa1170d9c84a.tar.bz2
iced-ac7b77f59c720bdb618057df0435fa1170d9c84a.zip
Only invalidate layout if children layout is invalid
Diffstat (limited to '')
-rw-r--r--lazy/src/responsive.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/lazy/src/responsive.rs b/lazy/src/responsive.rs
index cdeec2ad..2f097ff5 100644
--- a/lazy/src/responsive.rs
+++ b/lazy/src/responsive.rs
@@ -145,8 +145,6 @@ where
_renderer: &Renderer,
limits: &layout::Limits,
) -> layout::Node {
- let _ = self.content.borrow_mut().layout.take();
-
layout::Node::new(limits.max())
}
@@ -186,7 +184,10 @@ where
let state = tree.state.downcast_mut::<State>();
let mut content = self.content.borrow_mut();
- content.resolve(
+ let mut local_messages = vec![];
+ let mut local_shell = Shell::new(&mut local_messages);
+
+ let status = content.resolve(
&mut state.tree.borrow_mut(),
renderer,
layout,
@@ -199,10 +200,18 @@ where
cursor_position,
renderer,
clipboard,
- shell,
+ &mut local_shell,
)
},
- )
+ );
+
+ if local_shell.is_layout_invalid() {
+ let _ = content.layout.take();
+ }
+
+ shell.merge(local_shell, std::convert::identity);
+
+ status
}
fn draw(