mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Allow raising FloatContext ceiling after processing box with overflow (#30539)
When a box has overflow, any floats placed in that box will lower the float ceiling into the overflow. If no float is placed in the box though, the ceiling should be the block position where the overflow starts. We already know where this is, because we might be passing a negative value for the new block position after processing a box (content_size - actual_size would be negative). This negative value never raises the ceiling though since a maximum is used. In the case that there is overflow, this change allows raising the ceiling, but never passed the lowest float. This necessitates keeping two values for the ceiling: one for floats and one for non-floats. Fixes #30304.
This commit is contained in:
parent
59ea908294
commit
2c341d9e69
6 changed files with 35 additions and 25 deletions
|
@ -467,7 +467,7 @@ impl FloatPlacement {
|
|||
let mut placed_floats = vec![];
|
||||
for float in floats {
|
||||
let ceiling = Length::new(float.ceiling as f32);
|
||||
float_context.lower_ceiling(ceiling);
|
||||
float_context.set_ceiling_from_non_floats(ceiling);
|
||||
float_context.containing_block_info = float.containing_block_info;
|
||||
placed_floats.push(PlacedFloat {
|
||||
origin: float_context.add_float(&float.info),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue