summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/typst-layout/src/grid/layouter.rs12
-rw-r--r--crates/typst-layout/src/grid/repeated.rs9
-rw-r--r--tests/ref/grid-subfooters-demo.pngbin7234 -> 6989 bytes
-rw-r--r--tests/ref/grid-subfooters-repeat-replace-double-widow.pngbin1033 -> 973 bytes
-rw-r--r--tests/ref/grid-subfooters-repeat-replace-gutter.pngbin772 -> 721 bytes
-rw-r--r--tests/ref/grid-subfooters-repeat-replace-multiple-levels.pngbin0 -> 910 bytes
-rw-r--r--tests/ref/grid-subfooters-repeat-replace-widow.pngbin979 -> 970 bytes
-rw-r--r--tests/ref/grid-subfooters-repeat-replace.pngbin975 -> 963 bytes
8 files changed, 9 insertions, 12 deletions
diff --git a/crates/typst-layout/src/grid/layouter.rs b/crates/typst-layout/src/grid/layouter.rs
index d4604091..fd846b6e 100644
--- a/crates/typst-layout/src/grid/layouter.rs
+++ b/crates/typst-layout/src/grid/layouter.rs
@@ -298,11 +298,6 @@ impl<'a> GridLayouter<'a> {
self.prepare_next_repeating_footers(true, engine)?;
- // Ensure rows in the first region will be aware of the possible
- // presence of the footer.
- self.regions.size.y -= self.current.footer_height;
- self.current.initial_after_repeats = self.regions.size.y;
-
let mut y = 0;
let mut consecutive_header_count = 0;
while y < self.grid.rows.len() {
@@ -1785,13 +1780,6 @@ impl<'a> GridLayouter<'a> {
)?;
}
- // Ensure rows don't try to overrun the footer.
- // Note that header layout will only subtract this again if it has
- // to skip regions to fit headers, so there is no risk of
- // subtracting this twice.
- self.regions.size.y -= self.current.footer_height;
- self.current.initial_after_repeats = self.regions.size.y;
-
if !self.repeating_headers.is_empty() || !self.pending_headers.is_empty() {
// Add headers to the new region.
self.layout_active_headers(engine)?;
diff --git a/crates/typst-layout/src/grid/repeated.rs b/crates/typst-layout/src/grid/repeated.rs
index 1a873310..86506df7 100644
--- a/crates/typst-layout/src/grid/repeated.rs
+++ b/crates/typst-layout/src/grid/repeated.rs
@@ -632,9 +632,18 @@ impl<'a> GridLayouter<'a> {
.simulate_footer_heights(footers, &self.regions, engine, disambiguator)?;
}
+ // Ensure rows don't try to overrun the new footers.
+ // Note that header layout will only subtract this again if it has
+ // to skip regions to fit headers, so there is no risk of
+ // subtracting this twice.
+ self.regions.size.y -= expected_footer_height;
self.current.footer_height += expected_footer_height;
self.current.repeating_footer_heights.extend(expected_footer_heights);
+ if at_region_top {
+ self.current.initial_after_repeats = self.regions.size.y;
+ }
+
Ok(())
}
diff --git a/tests/ref/grid-subfooters-demo.png b/tests/ref/grid-subfooters-demo.png
index dc64e29a..f4a3f173 100644
--- a/tests/ref/grid-subfooters-demo.png
+++ b/tests/ref/grid-subfooters-demo.png
Binary files differ
diff --git a/tests/ref/grid-subfooters-repeat-replace-double-widow.png b/tests/ref/grid-subfooters-repeat-replace-double-widow.png
index 86d92a83..37ecbca3 100644
--- a/tests/ref/grid-subfooters-repeat-replace-double-widow.png
+++ b/tests/ref/grid-subfooters-repeat-replace-double-widow.png
Binary files differ
diff --git a/tests/ref/grid-subfooters-repeat-replace-gutter.png b/tests/ref/grid-subfooters-repeat-replace-gutter.png
index 2ca22153..61bdabeb 100644
--- a/tests/ref/grid-subfooters-repeat-replace-gutter.png
+++ b/tests/ref/grid-subfooters-repeat-replace-gutter.png
Binary files differ
diff --git a/tests/ref/grid-subfooters-repeat-replace-multiple-levels.png b/tests/ref/grid-subfooters-repeat-replace-multiple-levels.png
new file mode 100644
index 00000000..6247969a
--- /dev/null
+++ b/tests/ref/grid-subfooters-repeat-replace-multiple-levels.png
Binary files differ
diff --git a/tests/ref/grid-subfooters-repeat-replace-widow.png b/tests/ref/grid-subfooters-repeat-replace-widow.png
index 35633b0a..090ebca3 100644
--- a/tests/ref/grid-subfooters-repeat-replace-widow.png
+++ b/tests/ref/grid-subfooters-repeat-replace-widow.png
Binary files differ
diff --git a/tests/ref/grid-subfooters-repeat-replace.png b/tests/ref/grid-subfooters-repeat-replace.png
index 0d7803b8..95025f8b 100644
--- a/tests/ref/grid-subfooters-repeat-replace.png
+++ b/tests/ref/grid-subfooters-repeat-replace.png
Binary files differ