summaryrefslogtreecommitdiff
path: root/src/layout/grid.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-08-19 15:31:29 +0200
committerLaurenz <laurmaedje@gmail.com>2021-08-19 15:52:15 +0200
commita6f260ca39f70f82617eca87855789413715f47d (patch)
tree08141ae619bd21e0544d21433bce759aebc7ba83 /src/layout/grid.rs
parentfdab7158c91c52a4ace211c804fdd8e9110f56de (diff)
Refactor layouting a bit
Notably: - Handle aspect ratio in fixed node - Inline constraint inflation into pad node
Diffstat (limited to 'src/layout/grid.rs')
-rw-r--r--src/layout/grid.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/layout/grid.rs b/src/layout/grid.rs
index 0a189513..ed408ab8 100644
--- a/src/layout/grid.rs
+++ b/src/layout/grid.rs
@@ -263,7 +263,7 @@ impl<'a> GridLayouter<'a> {
let mut resolved = Length::zero();
for node in (0 .. self.rows.len()).filter_map(|y| self.cell(x, y)) {
let size = Gen::new(available, Length::inf()).to_size(self.main);
- let regions = Regions::one(size, Spec::splat(false));
+ let regions = Regions::one(size, size, Spec::splat(false));
let frame = node.layout(ctx, &regions).remove(0);
resolved.set_max(frame.size.get(self.cross));
}
@@ -405,7 +405,7 @@ impl<'a> GridLayouter<'a> {
for (x, &rcol) in self.rcols.iter().enumerate() {
if let Some(node) = self.cell(x, y) {
let size = Gen::new(rcol, length).to_size(self.main);
- let regions = Regions::one(size, Spec::splat(true));
+ let regions = Regions::one(size, size, Spec::splat(true));
let frame = node.layout(ctx, &regions).remove(0);
output.push_frame(pos.to_point(self.main), frame.item);
}
@@ -432,7 +432,8 @@ impl<'a> GridLayouter<'a> {
.collect();
// Prepare regions.
- let mut regions = Regions::one(self.to_size(first), Spec::splat(true));
+ let size = self.to_size(first);
+ let mut regions = Regions::one(size, size, Spec::splat(true));
regions.backlog = rest.iter().rev().map(|&v| self.to_size(v)).collect();
// Layout the row.