mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
layout: Allow floats to have negative ceilings due to negative margins.
This fixes `margin-collapse-104.htm`, which is currently accidentally passing due to lack of #10085. When that PR lands, then that will become a representative test case.
This commit is contained in:
parent
a211bd1a12
commit
24d81e95b4
1 changed files with 15 additions and 12 deletions
|
@ -56,14 +56,14 @@ struct FloatList {
|
||||||
/// Information about each of the floats here.
|
/// Information about each of the floats here.
|
||||||
floats: PersistentList<Float>,
|
floats: PersistentList<Float>,
|
||||||
/// Cached copy of the maximum block-start offset of the float.
|
/// Cached copy of the maximum block-start offset of the float.
|
||||||
max_block_start: Au,
|
max_block_start: Option<Au>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl FloatList {
|
impl FloatList {
|
||||||
fn new() -> FloatList {
|
fn new() -> FloatList {
|
||||||
FloatList {
|
FloatList {
|
||||||
floats: PersistentList::new(),
|
floats: PersistentList::new(),
|
||||||
max_block_start: Au(0),
|
max_block_start: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,15 +247,15 @@ impl Floats {
|
||||||
|
|
||||||
/// Adds a new float to the list.
|
/// Adds a new float to the list.
|
||||||
pub fn add_float(&mut self, info: &PlacementInfo) {
|
pub fn add_float(&mut self, info: &PlacementInfo) {
|
||||||
let new_info;
|
let new_info = PlacementInfo {
|
||||||
{
|
size: info.size,
|
||||||
new_info = PlacementInfo {
|
ceiling: match self.list.max_block_start {
|
||||||
size: info.size,
|
None => info.ceiling,
|
||||||
ceiling: max(info.ceiling, self.list.max_block_start + self.offset.block),
|
Some(max_block_start) => max(info.ceiling, max_block_start + self.offset.block),
|
||||||
max_inline_size: info.max_inline_size,
|
},
|
||||||
kind: info.kind
|
max_inline_size: info.max_inline_size,
|
||||||
}
|
kind: info.kind
|
||||||
}
|
};
|
||||||
|
|
||||||
debug!("add_float: added float with info {:?}", new_info);
|
debug!("add_float: added float with info {:?}", new_info);
|
||||||
|
|
||||||
|
@ -269,7 +269,10 @@ impl Floats {
|
||||||
};
|
};
|
||||||
|
|
||||||
self.list.floats = self.list.floats.prepend_elem(new_float);
|
self.list.floats = self.list.floats.prepend_elem(new_float);
|
||||||
self.list.max_block_start = max(self.list.max_block_start, new_float.bounds.start.b);
|
self.list.max_block_start = match self.list.max_block_start {
|
||||||
|
None => Some(new_float.bounds.start.b),
|
||||||
|
Some(max_block_start) => Some(max(max_block_start, new_float.bounds.start.b)),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Given the three sides of the bounding rectangle in the block-start direction, finds the
|
/// Given the three sides of the bounding rectangle in the block-start direction, finds the
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue