diff options
author | 2024-10-29 20:53:29 +0100 | |
---|---|---|
committer | 2024-11-05 23:52:58 +0100 | |
commit | c6af79a1d06013343f9caf2de80597d627254084 (patch) | |
tree | 123d5752eb3ee6c3ada00776eafded5428994482 /widget/src/lazy/responsive.rs | |
parent | 4e47450c336a235fe26090665aca1cc7b4d23384 (diff) | |
download | iced-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.rs | 23 |
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>( |