summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-08-30 04:31:21 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-08-30 04:31:21 +0200
commited3454301e663a7cb7d73cd56b57b188f4d14a2f (patch)
tree8118d1305c2eba3a1b45d04634cd0e8d050fc0fa /runtime
parentc9bd48704dd9679c033dd0b8588e2744a3df44a0 (diff)
downloadiced-ed3454301e663a7cb7d73cd56b57b188f4d14a2f.tar.gz
iced-ed3454301e663a7cb7d73cd56b57b188f4d14a2f.tar.bz2
iced-ed3454301e663a7cb7d73cd56b57b188f4d14a2f.zip
Implement explicit text caching in the widget state tree
Diffstat (limited to 'runtime')
-rw-r--r--runtime/src/user_interface.rs17
1 files changed, 11 insertions, 6 deletions
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),
);