mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
layout: Use the value of the max-width
property when speculating what
the inline sizes of block formatting contexts are likely to be. Usually, Web developers set this property on block formatting contexts in order to avoid running into floats, and we can use this as a speculation hint. Fixes the width of the search box on the Google SERPs.
This commit is contained in:
parent
d654841288
commit
69e5bd2e3d
4 changed files with 62 additions and 4 deletions
|
@ -1639,10 +1639,16 @@ impl Flow for BlockFlow {
|
|||
// We can't actually compute the inline-size of this block now, because floats
|
||||
// might affect it. Speculate that its inline-size is equal to the inline-size
|
||||
// computed above minus the inline-size of the previous left and/or right floats.
|
||||
self.fragment.border_box.size.inline =
|
||||
self.fragment.border_box.size.inline -
|
||||
self.inline_size_of_preceding_left_floats -
|
||||
self.inline_size_of_preceding_right_floats;
|
||||
//
|
||||
// (If `max-width` is set, then don't perform this speculation. We guess that the
|
||||
// page set `max-width` in order to avoid hitting floats. The search box on Google
|
||||
// SERPs falls into this category.)
|
||||
if self.fragment.style.max_inline_size() == LengthOrPercentageOrNone::None {
|
||||
self.fragment.border_box.size.inline =
|
||||
self.fragment.border_box.size.inline -
|
||||
self.inline_size_of_preceding_left_floats -
|
||||
self.inline_size_of_preceding_right_floats;
|
||||
}
|
||||
}
|
||||
FormattingContextType::Other => {
|
||||
self.base.flags.remove(IMPACTED_BY_LEFT_FLOATS);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue