| Index: Source/core/layout/LayoutBlockFlowLine.cpp
|
| diff --git a/Source/core/layout/LayoutBlockFlowLine.cpp b/Source/core/layout/LayoutBlockFlowLine.cpp
|
| index 1c192276d25404ba9e39b814d1c0683b9308e72a..2e0ecfd1d1912619178738cb31b94b400cad526b 100644
|
| --- a/Source/core/layout/LayoutBlockFlowLine.cpp
|
| +++ b/Source/core/layout/LayoutBlockFlowLine.cpp
|
| @@ -1042,12 +1042,14 @@ void LayoutBlockFlow::markDirtyFloatsForPaintInvalidation(Vector<FloatWithRect>&
|
| // painted by now if they had moved, but if they stayed at (0, 0), they still need to be
|
| // painted.
|
| for (size_t i = 0; i < floatCount; ++i) {
|
| + LayoutBox* f = floats[i].object;
|
| if (!floats[i].everHadLayout) {
|
| - LayoutBox* f = floats[i].object;
|
| if (!f->location().x() && !f->location().y())
|
| f->setShouldDoFullPaintInvalidation();
|
| }
|
| + insertFloatingObject(*f);
|
| }
|
| + positionNewFloats();
|
| }
|
|
|
| struct InlineMinMaxIterator {
|
| @@ -1530,7 +1532,6 @@ void LayoutBlockFlow::layoutInlineChildren(bool relayoutChildren, LayoutUnit& pa
|
| // deleted and only dirtied. In that case, we can layout the replaced
|
| // elements at the same time.
|
| Vector<LayoutBox*> replacedChildren;
|
| - LayoutObject* lastChild = nullptr;
|
| for (InlineWalker walker(this); !walker.atEnd(); walker.advance()) {
|
| LayoutObject* o = walker.current();
|
|
|
| @@ -1565,13 +1566,7 @@ void LayoutBlockFlow::layoutInlineChildren(bool relayoutChildren, LayoutUnit& pa
|
| dirtyLineBoxesForObject(o, layoutState.isFullLayout());
|
| o->clearNeedsLayout();
|
| }
|
| - if (!o->isText() || !toLayoutText(o)->isAllCollapsibleWhitespace())
|
| - lastChild = o;
|
| }
|
| - // If there is a trailing float on the line that will possibly occur after a natural line break
|
| - // then dirty its adjacent lineboxes to ensure it gets placed.
|
| - if (lastChild && lastChild->isFloating())
|
| - dirtyLinesFromChangedChild(lastChild);
|
|
|
| for (size_t i = 0; i < replacedChildren.size(); i++)
|
| replacedChildren[i]->layoutIfNeeded();
|
|
|