Implement explicit text caching in the widget state tree

This commit is contained in:
Héctor Ramón Jiménez 2023-08-30 04:31:21 +02:00
parent c9bd48704d
commit ed3454301e
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
79 changed files with 1910 additions and 1705 deletions

View file

@ -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),
);