From b5d33b0370ba8430bb8dbede7fef377ac2a67667 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 3 Nov 2022 02:28:54 +0100 Subject: Diff children only when hash differs in `lazy::Cached` --- lazy/src/cached.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'lazy/src') diff --git a/lazy/src/cached.rs b/lazy/src/cached.rs index 184ec9e7..a2a519c0 100644 --- a/lazy/src/cached.rs +++ b/lazy/src/cached.rs @@ -97,12 +97,14 @@ where let element = (self.view)().into(); current.element = Rc::new(RefCell::new(element)); - } - (*self.element.borrow_mut()) = Some(current.element.clone()); - tree.diff_children(std::slice::from_ref( - &self.element.borrow().as_ref().unwrap().borrow().as_widget(), - )); + (*self.element.borrow_mut()) = Some(current.element.clone()); + tree.diff_children(std::slice::from_ref( + &self.element.borrow().as_ref().unwrap().borrow().as_widget(), + )); + } else { + (*self.element.borrow_mut()) = Some(current.element.clone()); + } } fn width(&self) -> Length { -- cgit