diff --git a/crates/typst-library/src/layout/grid/mod.rs b/crates/typst-library/src/layout/grid/mod.rs index 6616c3311..369df11ee 100644 --- a/crates/typst-library/src/layout/grid/mod.rs +++ b/crates/typst-library/src/layout/grid/mod.rs @@ -755,7 +755,14 @@ impl Show for Packed { impl Default for Packed { fn default() -> Self { - Packed::new(GridCell::new(Content::default())) + Packed::new( + // Explicitly set colspan and rowspan to ensure they won't be + // overridden by set rules (default cells are created after + // colspans and rowspans are processed in the resolver) + GridCell::new(Content::default()) + .with_colspan(NonZeroUsize::ONE) + .with_rowspan(NonZeroUsize::ONE), + ) } } diff --git a/crates/typst-library/src/model/table.rs b/crates/typst-library/src/model/table.rs index 6f4461bd4..373230897 100644 --- a/crates/typst-library/src/model/table.rs +++ b/crates/typst-library/src/model/table.rs @@ -770,7 +770,14 @@ impl Show for Packed { impl Default for Packed { fn default() -> Self { - Packed::new(TableCell::new(Content::default())) + Packed::new( + // Explicitly set colspan and rowspan to ensure they won't be + // overridden by set rules (default cells are created after + // colspans and rowspans are processed in the resolver) + TableCell::new(Content::default()) + .with_colspan(NonZeroUsize::ONE) + .with_rowspan(NonZeroUsize::ONE), + ) } } diff --git a/tests/ref/issue-6399-grid-cell-colspan-set-rule.png b/tests/ref/issue-6399-grid-cell-colspan-set-rule.png new file mode 100644 index 000000000..a40eda78d Binary files /dev/null and b/tests/ref/issue-6399-grid-cell-colspan-set-rule.png differ diff --git a/tests/ref/issue-6399-grid-cell-rowspan-set-rule.png b/tests/ref/issue-6399-grid-cell-rowspan-set-rule.png new file mode 100644 index 000000000..a40eda78d Binary files /dev/null and b/tests/ref/issue-6399-grid-cell-rowspan-set-rule.png differ diff --git a/tests/suite/layout/grid/colspan.typ b/tests/suite/layout/grid/colspan.typ index 707a9456b..6e43270c3 100644 --- a/tests/suite/layout/grid/colspan.typ +++ b/tests/suite/layout/grid/colspan.typ @@ -140,3 +140,7 @@ [e], [g], grid.cell(colspan: 2)[eee\ e\ e\ e], grid.cell(colspan: 4)[eeee e e e] ) + +--- issue-6399-grid-cell-colspan-set-rule --- +#set grid.cell(colspan: 2) +#grid(columns: 3, [hehe]) diff --git a/tests/suite/layout/grid/rowspan.typ b/tests/suite/layout/grid/rowspan.typ index 88aa34c65..5fc28b9be 100644 --- a/tests/suite/layout/grid/rowspan.typ +++ b/tests/suite/layout/grid/rowspan.typ @@ -488,3 +488,7 @@ table.cell(rowspan: 15, align: horizon, lets-repeat((rotate(-90deg, reflow: true)[*All Tests*]), 3)), ..([123], [456], [789]) * 15 ) + +--- issue-6399-grid-cell-rowspan-set-rule --- +#set grid.cell(rowspan: 2) +#grid(columns: 2, [hehe])