diff options
author | Matt Brubeck <mbrubeck@limpet.net> | 2017-01-23 09:28:38 -0800 |
---|---|---|
committer | Matt Brubeck <mbrubeck@limpet.net> | 2017-01-24 16:03:12 -0800 |
commit | 258162fbee65fb894b8aac5dbce5a366f71dc7b3 (patch) | |
tree | 40b0714a9551527c3f812d4382ac750f6c43e9a0 /components/layout/table.rs | |
parent | e315e2e167d2ee3810a89b403867dc5849f47701 (diff) | |
download | servo-258162fbee65fb894b8aac5dbce5a366f71dc7b3.tar.gz servo-258162fbee65fb894b8aac5dbce5a366f71dc7b3.zip |
Fix block-direction border collapsing calculation
Previously the block-start collapsed borders from rows/cells were
written to `preliminary_collapsed_borders` but never read. This fixes
the block-direction part of #14834.
Diffstat (limited to 'components/layout/table.rs')
-rw-r--r-- | components/layout/table.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/components/layout/table.rs b/components/layout/table.rs index 9ad018f622e..81cde44bba6 100644 --- a/components/layout/table.rs +++ b/components/layout/table.rs @@ -681,13 +681,18 @@ fn perform_border_collapse_for_row(child_table_row: &mut TableRowFlow, } // Compute block-start borders. - match previous_block_borders { - PreviousBlockCollapsedBorders::FromPreviousRow(previous_block_borders) => { - child_table_row.final_collapsed_borders.block_start = previous_block_borders - } - PreviousBlockCollapsedBorders::FromTable(collapsed_border) => { - child_table_row.final_collapsed_borders.block_start = - vec![collapsed_border; child_table_row.block_flow.base.children.len()] + let block_start_borders = &mut child_table_row.final_collapsed_borders.block_start; + *block_start_borders = child_table_row.preliminary_collapsed_borders.block_start.clone(); + for (i, this_border) in block_start_borders.iter_mut().enumerate() { + match previous_block_borders { + PreviousBlockCollapsedBorders::FromPreviousRow(ref previous_block_borders) => { + if previous_block_borders.len() > i { + this_border.combine(&previous_block_borders[i]); + } + } + PreviousBlockCollapsedBorders::FromTable(table_border) => { + this_border.combine(&table_border); + } } } |