summaryrefslogtreecommitdiffstats
path: root/widget/src/pane_grid
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 /widget/src/pane_grid
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 'widget/src/pane_grid')
-rw-r--r--widget/src/pane_grid/content.rs13
-rw-r--r--widget/src/pane_grid/title_bar.rs18
2 files changed, 21 insertions, 10 deletions
diff --git a/widget/src/pane_grid/content.rs b/widget/src/pane_grid/content.rs
index e890e41a..8a74b4b9 100644
--- a/widget/src/pane_grid/content.rs
+++ b/widget/src/pane_grid/content.rs
@@ -150,18 +150,23 @@ where
pub(crate) fn layout(
&self,
+ tree: &Tree,
renderer: &Renderer,
limits: &layout::Limits,
) -> layout::Node {
if let Some(title_bar) = &self.title_bar {
let max_size = limits.max();
- let title_bar_layout = title_bar
- .layout(renderer, &layout::Limits::new(Size::ZERO, max_size));
+ let title_bar_layout = title_bar.layout(
+ &tree.children[1],
+ renderer,
+ &layout::Limits::new(Size::ZERO, max_size),
+ );
let title_bar_size = title_bar_layout.size();
let mut body_layout = self.body.as_widget().layout(
+ &tree.children[0],
renderer,
&layout::Limits::new(
Size::ZERO,
@@ -179,7 +184,9 @@ where
vec![title_bar_layout, body_layout],
)
} else {
- self.body.as_widget().layout(renderer, limits)
+ self.body
+ .as_widget()
+ .layout(&tree.children[0], renderer, limits)
}
}
diff --git a/widget/src/pane_grid/title_bar.rs b/widget/src/pane_grid/title_bar.rs
index cac24e68..c0fb9936 100644
--- a/widget/src/pane_grid/title_bar.rs
+++ b/widget/src/pane_grid/title_bar.rs
@@ -213,23 +213,27 @@ where
pub(crate) fn layout(
&self,
+ tree: &Tree,
renderer: &Renderer,
limits: &layout::Limits,
) -> layout::Node {
let limits = limits.pad(self.padding);
let max_size = limits.max();
- let title_layout = self
- .content
- .as_widget()
- .layout(renderer, &layout::Limits::new(Size::ZERO, max_size));
+ let title_layout = self.content.as_widget().layout(
+ &tree.children[0],
+ renderer,
+ &layout::Limits::new(Size::ZERO, max_size),
+ );
let title_size = title_layout.size();
let mut node = if let Some(controls) = &self.controls {
- let mut controls_layout = controls
- .as_widget()
- .layout(renderer, &layout::Limits::new(Size::ZERO, max_size));
+ let mut controls_layout = controls.as_widget().layout(
+ &tree.children[1],
+ renderer,
+ &layout::Limits::new(Size::ZERO, max_size),
+ );
let controls_size = controls_layout.size();
let space_before_controls = max_size.width - controls_size.width;