diff options
| author | PgBiel <9021226+PgBiel@users.noreply.github.com> | 2025-06-13 03:45:42 -0300 |
|---|---|---|
| committer | PgBiel <9021226+PgBiel@users.noreply.github.com> | 2025-06-28 22:39:35 -0300 |
| commit | f3cc3bdae77793e73d4a72bab55ed3331b23e2a1 (patch) | |
| tree | 2246486fd495f6526983320aa46506457c8ab382 | |
| parent | a2f559317495b6df20875e38c1c37f9aa02c4115 (diff) | |
fix space calculation of new footers
however, there are widows...
| -rw-r--r-- | crates/typst-layout/src/grid/layouter.rs | 12 | ||||
| -rw-r--r-- | crates/typst-layout/src/grid/repeated.rs | 9 | ||||
| -rw-r--r-- | tests/ref/grid-subfooters-demo.png | bin | 7234 -> 6989 bytes | |||
| -rw-r--r-- | tests/ref/grid-subfooters-repeat-replace-double-widow.png | bin | 1033 -> 973 bytes | |||
| -rw-r--r-- | tests/ref/grid-subfooters-repeat-replace-gutter.png | bin | 772 -> 721 bytes | |||
| -rw-r--r-- | tests/ref/grid-subfooters-repeat-replace-multiple-levels.png | bin | 0 -> 910 bytes | |||
| -rw-r--r-- | tests/ref/grid-subfooters-repeat-replace-widow.png | bin | 979 -> 970 bytes | |||
| -rw-r--r-- | tests/ref/grid-subfooters-repeat-replace.png | bin | 975 -> 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 Binary files differindex dc64e29a..f4a3f173 100644 --- a/tests/ref/grid-subfooters-demo.png +++ b/tests/ref/grid-subfooters-demo.png diff --git a/tests/ref/grid-subfooters-repeat-replace-double-widow.png b/tests/ref/grid-subfooters-repeat-replace-double-widow.png Binary files differindex 86d92a83..37ecbca3 100644 --- a/tests/ref/grid-subfooters-repeat-replace-double-widow.png +++ b/tests/ref/grid-subfooters-repeat-replace-double-widow.png diff --git a/tests/ref/grid-subfooters-repeat-replace-gutter.png b/tests/ref/grid-subfooters-repeat-replace-gutter.png Binary files differindex 2ca22153..61bdabeb 100644 --- a/tests/ref/grid-subfooters-repeat-replace-gutter.png +++ b/tests/ref/grid-subfooters-repeat-replace-gutter.png diff --git a/tests/ref/grid-subfooters-repeat-replace-multiple-levels.png b/tests/ref/grid-subfooters-repeat-replace-multiple-levels.png Binary files differnew file mode 100644 index 00000000..6247969a --- /dev/null +++ b/tests/ref/grid-subfooters-repeat-replace-multiple-levels.png diff --git a/tests/ref/grid-subfooters-repeat-replace-widow.png b/tests/ref/grid-subfooters-repeat-replace-widow.png Binary files differindex 35633b0a..090ebca3 100644 --- a/tests/ref/grid-subfooters-repeat-replace-widow.png +++ b/tests/ref/grid-subfooters-repeat-replace-widow.png diff --git a/tests/ref/grid-subfooters-repeat-replace.png b/tests/ref/grid-subfooters-repeat-replace.png Binary files differindex 0d7803b8..95025f8b 100644 --- a/tests/ref/grid-subfooters-repeat-replace.png +++ b/tests/ref/grid-subfooters-repeat-replace.png |
