From ed3454301e663a7cb7d73cd56b57b188f4d14a2f Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 30 Aug 2023 04:31:21 +0200 Subject: Implement explicit text caching in the widget state tree --- runtime/src/user_interface.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'runtime/src') diff --git a/runtime/src/user_interface.rs b/runtime/src/user_interface.rs index e529c004..a730102c 100644 --- a/runtime/src/user_interface.rs +++ b/runtime/src/user_interface.rs @@ -95,8 +95,11 @@ where let Cache { mut state } = cache; state.diff(root.as_widget()); - let base = - renderer.layout(&root, &layout::Limits::new(Size::ZERO, bounds)); + let base = root.as_widget().layout( + &state, + renderer, + &layout::Limits::new(Size::ZERO, bounds), + ); UserInterface { root, @@ -226,8 +229,9 @@ where if shell.is_layout_invalid() { let _ = ManuallyDrop::into_inner(manual_overlay); - self.base = renderer.layout( - &self.root, + self.base = self.root.as_widget().layout( + &self.state, + renderer, &layout::Limits::new(Size::ZERO, self.bounds), ); @@ -325,8 +329,9 @@ where } shell.revalidate_layout(|| { - self.base = renderer.layout( - &self.root, + self.base = self.root.as_widget().layout( + &self.state, + renderer, &layout::Limits::new(Size::ZERO, self.bounds), ); -- cgit From a026e917d3364e58fd827995261158d8cb356ce9 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 30 Aug 2023 06:36:24 +0200 Subject: Make `widget::Tree` mutable in `Widget::layout` --- runtime/src/user_interface.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'runtime/src') diff --git a/runtime/src/user_interface.rs b/runtime/src/user_interface.rs index a730102c..b684fbde 100644 --- a/runtime/src/user_interface.rs +++ b/runtime/src/user_interface.rs @@ -96,7 +96,7 @@ where state.diff(root.as_widget()); let base = root.as_widget().layout( - &state, + &mut state, renderer, &layout::Limits::new(Size::ZERO, bounds), ); @@ -230,7 +230,7 @@ where let _ = ManuallyDrop::into_inner(manual_overlay); self.base = self.root.as_widget().layout( - &self.state, + &mut self.state, renderer, &layout::Limits::new(Size::ZERO, self.bounds), ); @@ -330,7 +330,7 @@ where shell.revalidate_layout(|| { self.base = self.root.as_widget().layout( - &self.state, + &mut self.state, renderer, &layout::Limits::new(Size::ZERO, self.bounds), ); -- cgit