Make widget::Tree mutable in Widget::layout

This commit is contained in:
Héctor Ramón Jiménez 2023-08-30 06:36:24 +02:00
parent 301e6e5fdc
commit a026e917d3
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
45 changed files with 135 additions and 135 deletions

View file

@ -275,7 +275,7 @@ where
fn layout(
&self,
tree: &Tree,
tree: &mut Tree,
renderer: &Renderer,
limits: &layout::Limits,
) -> layout::Node {
@ -475,7 +475,7 @@ where
/// Calculates the [`Layout`] of a [`PaneGrid`].
pub fn layout<Renderer, T>(
tree: &Tree,
tree: &mut Tree,
renderer: &Renderer,
limits: &layout::Limits,
node: &Node,
@ -483,14 +483,19 @@ pub fn layout<Renderer, T>(
height: Length,
spacing: f32,
contents: impl Iterator<Item = (Pane, T)>,
layout_content: impl Fn(T, &Tree, &Renderer, &layout::Limits) -> layout::Node,
layout_content: impl Fn(
T,
&mut Tree,
&Renderer,
&layout::Limits,
) -> layout::Node,
) -> layout::Node {
let limits = limits.width(width).height(height);
let size = limits.resolve(Size::ZERO);
let regions = node.pane_regions(spacing, size);
let children = contents
.zip(tree.children.iter())
.zip(tree.children.iter_mut())
.filter_map(|((pane, content), tree)| {
let region = regions.get(&pane)?;
let size = Size::new(region.width, region.height);