From 6720d8c3017af787b8dce42e9fa15468f281629d Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 12 Jun 2023 17:20:49 +0200 Subject: [PATCH] Fix bug with missing table row Fixes #1388 --- library/src/layout/grid.rs | 4 ++-- library/src/layout/table.rs | 4 ++-- tests/ref/bugs/table-row-missing.png | Bin 0 -> 1029 bytes tests/typ/bugs/table-row-missing.typ | 8 ++++++++ 4 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 tests/ref/bugs/table-row-missing.png create mode 100644 tests/typ/bugs/table-row-missing.typ diff --git a/library/src/layout/grid.rs b/library/src/layout/grid.rs index ea155acdc..acf13d648 100644 --- a/library/src/layout/grid.rs +++ b/library/src/layout/grid.rs @@ -293,7 +293,7 @@ impl<'a, 'v> GridLayouter<'a, 'v> { for y in 0..self.rows.len() { // Skip to next region if current one is full, but only for content // rows, not for gutter rows. - if y % 2 == 0 && self.regions.is_full() { + if self.regions.is_full() && (!self.has_gutter || y % 2 == 0) { self.finish_region()?; } @@ -547,7 +547,7 @@ impl<'a, 'v> GridLayouter<'a, 'v> { self.finish_region()?; // Don't skip multiple regions for gutter and don't push a row. - if y % 2 == 1 { + if self.has_gutter && y % 2 == 1 { return Ok(()); } } diff --git a/library/src/layout/table.rs b/library/src/layout/table.rs index 44f185862..3235c790b 100644 --- a/library/src/layout/table.rs +++ b/library/src/layout/table.rs @@ -222,8 +222,8 @@ impl Layout for TableElem { } } -/// Turn an iterator extents into an iterator of offsets before, in between, and -/// after the extents, e.g. [10mm, 5mm] -> [0mm, 10mm, 15mm]. +/// Turn an iterator of extents into an iterator of offsets before, in between, +/// and after the extents, e.g. [10mm, 5mm] -> [0mm, 10mm, 15mm]. fn points(extents: impl IntoIterator) -> impl Iterator { let mut offset = Abs::zero(); std::iter::once(Abs::zero()) diff --git a/tests/ref/bugs/table-row-missing.png b/tests/ref/bugs/table-row-missing.png new file mode 100644 index 0000000000000000000000000000000000000000..90c46d3235383c323cb2b2cf15f413736e9b42e6 GIT binary patch literal 1029 zcmeAS@N?(olHy`uVBq!ia0y~yU}OPeGY+5t!=j6u3m6!f&v?2xhE&{odnY>MT%pYI zkM;j8r{zA&%1k_?C~lnBmaFm7(|1eStfCW!nc_i8TUy>aEnAt&r#o3Yu_dZce93YN zGr7}OF37lh_07I{{B6&MP15tf|9-c#@>S*6|Np9f)&KtA+|U68FZ3rzDl{-KabOS^ zc5~G4P~6VWBHwbq=H!!yrTE?X|?i_^Ha8H zzgueTRDH+E^Xfs<^cMGnQJ$s;1Jhfo54w4(H)*A}oG)~p)K~WNVIO<)t0d2-2a~f~ z4wZOjyPcAH=(e9d%m3#4-UVHqQ#X63^es4^9+lF6L07;57)SyR1#StZ{7jFL-0RdY z*r#9O{=#OOVA^iwnl)8MIZ}@oXhOa7LHN)U83B`|J+_A)RyywZGRgAL;kJl1|91Yh z_#*-JkcIMwS?rC4VDllw!gh}7pT&J5ZoTR)sJy|xS9;dd-U-vSGCe<>k$U*Y)3f!V z_IqQ;Np2}s{mm+}1@+6jmb5)tUF5z(UU;gt)8!LZD=$kwti7e_dGz~Q!EH-S&CTOI zekS!!kZeno==&tszI)@bW5*&Un;-ITg!rV%m}zyTz`x%RPa?Sl z>syvj()#^@Y1gWY%g>%?+3NRZ{+3^B|4zLSc31znoZ~EUlg15-J9wS`HJGKhob%nj zZK2~n{L8d+Z`MSN6t)0F@-FZ;5@v03+4>R0)Cx5|xO$)d^74~@e zZE^oG&ANJnt<%SYO4Tj9c5ZUdIG@Fs=-v88Ft2}~T<^L5e!BvZpo)I};V%;ip_a7C{(32~LhaYpF5ftisb1$;) zwDdyLsm6}x=?x2JX{u_M*%-Q8?92FmZ=+{mK8t6Sr3N#LtJAdtEuQ-g2Bt@=Wy12N zNfrg7C9g7UYgtDnm{r-UW|1)`c8 literal 0 HcmV?d00001 diff --git a/tests/typ/bugs/table-row-missing.typ b/tests/typ/bugs/table-row-missing.typ new file mode 100644 index 000000000..d72305bae --- /dev/null +++ b/tests/typ/bugs/table-row-missing.typ @@ -0,0 +1,8 @@ +// Test that a table row isn't wrongly treated like a gutter row. + +--- +#set page(height: 70pt) +#table( + rows: 16pt, + ..range(6).map(str).flatten(), +)