summaryrefslogtreecommitdiffstats
path: root/widget/src/lazy/responsive.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-10-29 20:53:29 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-11-05 23:52:58 +0100
commitc6af79a1d06013343f9caf2de80597d627254084 (patch)
tree123d5752eb3ee6c3ada00776eafded5428994482 /widget/src/lazy/responsive.rs
parent4e47450c336a235fe26090665aca1cc7b4d23384 (diff)
downloadiced-c6af79a1d06013343f9caf2de80597d627254084.tar.gz
iced-c6af79a1d06013343f9caf2de80597d627254084.tar.bz2
iced-c6af79a1d06013343f9caf2de80597d627254084.zip
Fix deferred layout on resize after drawing
Diffstat (limited to 'widget/src/lazy/responsive.rs')
-rw-r--r--widget/src/lazy/responsive.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/widget/src/lazy/responsive.rs b/widget/src/lazy/responsive.rs
index a8abbce8..f9bd0334 100644
--- a/widget/src/lazy/responsive.rs
+++ b/widget/src/lazy/responsive.rs
@@ -82,18 +82,21 @@ where
new_size: Size,
view: &dyn Fn(Size) -> Element<'a, Message, Theme, Renderer>,
) {
- let is_tree_empty =
- tree.tag == tree::Tag::stateless() && tree.children.is_empty();
+ if self.size != new_size {
+ self.element = view(new_size);
+ self.size = new_size;
+ self.layout = None;
- if !is_tree_empty && self.size == new_size {
- return;
- }
-
- self.element = view(new_size);
- self.size = new_size;
- self.layout = None;
+ tree.diff(&self.element);
+ } else {
+ let is_tree_empty =
+ tree.tag == tree::Tag::stateless() && tree.children.is_empty();
- tree.diff(&self.element);
+ if is_tree_empty {
+ self.layout = None;
+ tree.diff(&self.element);
+ }
+ }
}
fn resolve<R, T>(