layout: Don't pretend inline fragment sizes are zero when placing them

between floats.
This commit is contained in:
Patrick Walton 2016-04-27 12:40:58 -07:00
parent 94306cd183
commit 8823f87276
3 changed files with 20 additions and 2 deletions

View file

@ -1471,6 +1471,17 @@ impl Fragment {
result
}
/// Returns the narrowest inline-size that the first splittable part of this fragment could
/// possibly be split to. (In most cases, this returns the inline-size of the first word in
/// this fragment.)
pub fn minimum_splittable_inline_size(&self) -> Au {
match self.specific {
SpecificFragmentInfo::ScannedText(ref text) => {
text.run.minimum_splittable_inline_size(&text.range)
}
_ => Au(0),
}
}
/// TODO: What exactly does this function return? Why is it Au(0) for
/// `SpecificFragmentInfo::Generic`?

View file

@ -444,7 +444,7 @@ impl LineBreaker {
// Initially, pretend a splittable fragment has zero inline-size. We will move it later if
// it has nonzero inline-size and that causes problems.
let placement_inline_size = if first_fragment.can_split() {
Au(0)
first_fragment.minimum_splittable_inline_size()
} else {
first_fragment.margin_box_inline_size() + self.indentation_for_pending_fragment()
};