mirror of
https://github.com/typst/typst
synced 2025-05-22 04:55:29 +08:00
Fix panic in grid due to empty auto row
This commit is contained in:
parent
2818ceee44
commit
1d60525690
@ -387,31 +387,38 @@ impl<'a> GridLayouter<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Layout the row.
|
// Nothing to layout.
|
||||||
|
if resolved.is_empty() {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Layout into a single region.
|
||||||
if let &[first] = resolved.as_slice() {
|
if let &[first] = resolved.as_slice() {
|
||||||
let frame = self.layout_single_row(ctx, first, y);
|
let frame = self.layout_single_row(ctx, first, y);
|
||||||
self.push_row(ctx, frame);
|
self.push_row(ctx, frame);
|
||||||
} else {
|
return;
|
||||||
// Expand all but the last region if the space is not eaten up by any fr
|
}
|
||||||
// rows.
|
|
||||||
if self.fr.is_zero() {
|
|
||||||
let len = resolved.len();
|
|
||||||
for (target, (current, _)) in
|
|
||||||
resolved[.. len - 1].iter_mut().zip(self.regions.iter())
|
|
||||||
{
|
|
||||||
target.set_max(current.get(self.block));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let frames = self.layout_multi_row(ctx, &resolved, y);
|
// Expand all but the last region if the space is not
|
||||||
let len = frames.len();
|
// eaten up by any fr rows.
|
||||||
for (i, frame) in frames.into_iter().enumerate() {
|
if self.fr.is_zero() {
|
||||||
if i + 1 < len {
|
let len = resolved.len();
|
||||||
self.constraints.exact.set(self.block, Some(self.full));
|
for (target, (current, _)) in
|
||||||
}
|
resolved[.. len - 1].iter_mut().zip(self.regions.iter())
|
||||||
self.push_row(ctx, frame);
|
{
|
||||||
|
target.set_max(current.get(self.block));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Layout into multiple regions.
|
||||||
|
let frames = self.layout_multi_row(ctx, &resolved, y);
|
||||||
|
let len = frames.len();
|
||||||
|
for (i, frame) in frames.into_iter().enumerate() {
|
||||||
|
if i + 1 < len {
|
||||||
|
self.constraints.exact.set(self.block, Some(self.full));
|
||||||
|
}
|
||||||
|
self.push_row(ctx, frame);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Layout a row with a fixed size along the block axis.
|
/// Layout a row with a fixed size along the block axis.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user