mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 15:28:11 +00:00
LibWeb: Distribute cell contribution to all spanned columns
The specification isn't explicit about it, but the contribution we compute should be distributed to all columns, not just the first one. The first reason for it is symmetry, it doesn't make sense for the increased width of the spanning column to only affect the first column in the span. The second reason is the formula for the cell contribution, which is weighted by the non-spanning width of the cell relative to the total width of the columns in the same row. This only covers a fraction of the gap, in order to fully cover it we have to add it to all columns in the span. For this to be exactly the case when the columns don't all have the same width, we'd have to add additional weighting based on the width ratios, but given that the specification doesn't suggest it at all we'll leave it out for now.
This commit is contained in:
parent
50df78d2a2
commit
4d49852454
2 changed files with 15 additions and 11 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue