Breaking Float: floated block level element following inline element in floated container breaks to next line
https://bugs.webkit.org/show_bug.cgi?id=45274
Patch by ChangSeok Oh <shivamidow@gmail.com> on 2013-04-17
Reviewed by David Hyatt.
Source/WebCore:
Fix position issue of floating element in floating element.
Inner floating element has placed at next line when outer floating element has text,
even though previous line has spaces enough to fit it.
To solve this, the width of a space added temporarily for prohibiting duplication more than 2 empty spaces
is subtracted when floating element is checked whether it fits on a line.
Tests: css2.1/20110323/floats-001.html
css2.1/20110323/floats-102.html
fast/inline-block/float-both-whitespace.html
fast/inline-block/float-leading-whitespace.html
fast/inline-block/float-no-whitespace.html
fast/inline-block/float-trailing-whitespace.html
fast/inline-block/multiple-floats-with-whitespace.html
* rendering/RenderBlockLineLayout.cpp:
(WebCore::LineWidth::LineWidth):
(WebCore::LineWidth::fitsOnLine):
(WebCore::LineWidth::trailingWhitespaceWidth):
(WebCore::LineWidth::setTrailingWhitespaceWidth):
(LineWidth):
(WebCore::RenderBlock::LineBreaker::nextSegmentBreak):
LayoutTests:
* css2.1/20110323/floats-001-expected.html: Added.
* css2.1/20110323/floats-001.html: Added.
* css2.1/20110323/floats-102-expected.html: Added.
* css2.1/20110323/floats-102.html: Added.
Tests for whitespace around floating elements.
Following test cases are provied by Joseph Pecoraro.
See https://bugs.webkit.org/show_bug.cgi?id=58806
* fast/exclusions/shape-outside-floats/shape-outside-floats-stacked.html: Updated to match new treatment of trailing space.
* fast/inline-block/float-both-whitespace-expected.png: Added.
* fast/inline-block/float-both-whitespace-expected.txt: Added.
* fast/inline-block/float-both-whitespace.html: Added.
* fast/inline-block/float-leading-whitespace-expected.png: Added.
* fast/inline-block/float-leading-whitespace-expected.txt: Added.
* fast/inline-block/float-leading-whitespace.html: Added.
* fast/inline-block/float-no-whitespace-expected.png: Added.
* fast/inline-block/float-no-whitespace-expected.txt: Added.
* fast/inline-block/float-no-whitespace.html: Added.
* fast/inline-block/float-trailing-whitespace-expected.png: Added.
* fast/inline-block/float-trailing-whitespace-expected.txt: Added.
* fast/inline-block/float-trailing-whitespace.html: Added.
* fast/inline-block/multiple-floats-with-whitespace-expected.png: Added.
* fast/inline-block/multiple-floats-with-whitespace-expected.txt: Added.
* fast/inline-block/multiple-floats-with-whitespace.html: Added.
Update the following tests so that wrapping happens as it
did before. With this change the float:left div progressed
and could fit on an earlier line when we position after
collapsing whitespace. This moved the float a line earlier
and changed the results of the test. By adding a character
to the line, the float won't fit and goes back on to the
line that it was on before this change.
* fast/multicol/float-truncation.html:
* fast/multicol/vertical-lr/float-truncation.html:
* fast/multicol/vertical-rl/float-truncation.html:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@148622 268f45cc-cd09-0410-ab3c-d52691b4dbfc
26 files changed