mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Handle overlarge rowspans by keeping track of largest leftover incoming sizes
This commit is contained in:
parent
746acf7e2b
commit
0261762fa4
2 changed files with 35 additions and 12 deletions
|
@ -815,17 +815,27 @@ impl TableLikeFlow for BlockFlow {
|
|||
// Second pass: Compute row block sizes
|
||||
// [expensive: iterates over cells]
|
||||
let mut i = 0;
|
||||
let mut overflow = Au(0);
|
||||
for kid in self.base.child_iter_mut() {
|
||||
if kid.is_table_row() {
|
||||
let size = kid.as_mut_table_row()
|
||||
let (size, oflo) = kid.as_mut_table_row()
|
||||
.compute_block_size_table_row_base(layout_context,
|
||||
&mut incoming_rowspan_data,
|
||||
&sizes,
|
||||
i);
|
||||
sizes[i].0 = size;
|
||||
overflow = oflo;
|
||||
i += 1;
|
||||
// new rowgroups stop rowspans
|
||||
} else if kid.is_table_rowgroup() {
|
||||
if i > 0 {
|
||||
sizes[i - 1].0 = cmp::max(sizes[i - 1].0, overflow);
|
||||
}
|
||||
}
|
||||
}
|
||||
if i > 0 {
|
||||
sizes[i - 1].0 = cmp::max(sizes[i - 1].0, overflow);
|
||||
}
|
||||
|
||||
// Third pass: Assign block sizes to rows and cells
|
||||
// [expensive: iterates over cells]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue