diff --git a/Tests/LibWeb/Layout/expected/table/colspan-width-distribution.txt b/Tests/LibWeb/Layout/expected/table/colspan-width-distribution.txt index 4ceb0e61c2..d8a29597ca 100644 --- a/Tests/LibWeb/Layout/expected/table/colspan-width-distribution.txt +++ b/Tests/LibWeb/Layout/expected/table/colspan-width-distribution.txt @@ -5,12 +5,12 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline BlockContainer at (8,8) content-size 784x44.9375 children: not-inline BlockContainer <(anonymous)> at (8,8) content-size 784x0 children: inline TextNode <#text> - TableWrapper <(anonymous)> at (8,8) content-size 32.904952x44.9375 [BFC] children: not-inline - Box at (9,9) content-size 32.904952x42.9375 table-box [TFC] children: not-inline + TableWrapper <(anonymous)> at (8,8) content-size 41.122404x44.9375 [BFC] children: not-inline + Box
at (9,9) content-size 41.122404x42.9375 table-box [TFC] children: not-inline BlockContainer <(anonymous)> (not painted) children: inline TextNode <#text> - Box at (9,9) content-size 34.904952x42.9375 table-row-group children: not-inline - Box at (9,9) content-size 34.904952x21.46875 table-row children: not-inline + Box at (9,9) content-size 43.122404x42.9375 table-row-group children: not-inline + Box at (9,9) content-size 43.122404x21.46875 table-row children: not-inline BlockContainer <(anonymous)> (not painted) children: inline TextNode <#text> BlockContainer at (9,30.46875) content-size 34.904952x21.46875 table-row children: not-inline + Box at (9,30.46875) content-size 43.122404x21.46875 table-row children: not-inline BlockContainer <(anonymous)> (not painted) children: inline TextNode <#text> - BlockContainer
at (11,11) content-size 17.561202x17.46875 table-cell [BFC] children: inline @@ -20,21 +20,21 @@ Viewport <#document> at (0,0) content-size 800x600 children: not-inline TextNode <#text> BlockContainer <(anonymous)> (not painted) children: inline TextNode <#text> - BlockContainer at (32.561202,11) content-size 9.34375x17.46875 table-cell [BFC] children: inline + BlockContainer at (32.561202,11) content-size 17.561202x17.46875 table-cell [BFC] children: inline line 0 width: 9.34375, height: 17.46875, bottom: 17.46875, baseline: 13.53125 - frag 0 from TextNode start: 0, length: 1, rect: [32.561202,11 9.34375x17.46875] + frag 0 from TextNode start: 0, length: 1, rect: [36.561202,11 9.34375x17.46875] "B" TextNode <#text> BlockContainer <(anonymous)> (not painted) children: inline TextNode <#text> BlockContainer <(anonymous)> (not painted) children: inline TextNode <#text> - Box
at (11,32.46875) content-size 30.904952x17.46875 table-cell [BFC] children: inline + BlockContainer at (11,32.46875) content-size 39.122404x17.46875 table-cell [BFC] children: inline line 0 width: 33.3125, height: 17.46875, bottom: 17.46875, baseline: 13.53125 - frag 0 from TextNode start: 0, length: 3, rect: [11,32.46875 33.3125x17.46875] + frag 0 from TextNode start: 0, length: 3, rect: [14,32.46875 33.3125x17.46875] "CDE" TextNode <#text> BlockContainer <(anonymous)> (not painted) children: inline diff --git a/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp index c6562dc0df..fcb916a777 100644 --- a/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/TableFormattingContext.cpp @@ -234,8 +234,12 @@ void TableFormattingContext::compute_table_measures() // - the outer max-content width of the cell minus the baseline max-content width and the baseline border spacing, or 0 if this is negative cell_max_contribution += (m_columns[cell.column_index].max_width / baseline_max_content_width) * max(CSSPixels(0), cell.max_width - baseline_max_content_width); - cell_min_contributions_by_column_index[cell.column_index].append(cell_min_contribution); - cell_max_contributions_by_column_index[cell.column_index].append(cell_max_contribution); + // Spread contribution to all columns, since we've weighted the gap to the desired spanned width by the the + // ratio of the max-content width based on cells of span up to N-1 of the column to the baseline max-content width. + for (auto column_index = cell_start_column_index; column_index < cell_end_column_index; column_index++) { + cell_min_contributions_by_column_index[column_index].append(cell_min_contribution); + cell_max_contributions_by_column_index[column_index].append(cell_max_contribution); + } } }