Chromium Code Reviews| Index: Source/core/layout/LayoutInline.cpp |
| diff --git a/Source/core/layout/LayoutInline.cpp b/Source/core/layout/LayoutInline.cpp |
| index e3044721f6f9e24785264a853c24c927b1262ad4..a68e59cffc75a66ec8095a840df63f4f3a12bd38 100644 |
| --- a/Source/core/layout/LayoutInline.cpp |
| +++ b/Source/core/layout/LayoutInline.cpp |
| @@ -1050,32 +1050,22 @@ LayoutRect LayoutInline::clippedOverflowRect(const LayoutBoxModelObject* paintIn |
| return LayoutRect(); |
| LayoutRect overflowRect(linesVisualOverflowBoundingBox()); |
| - mapRectToPaintInvalidationBacking(paintInvalidationContainer, overflowRect, paintInvalidationState); |
| LayoutUnit outlineOutset = style()->outlineOutsetExtent(); |
| if (outlineOutset) { |
| - for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) { |
| - if (!curr->isText()) |
| - overflowRect.unite(curr->rectWithOutlineForPaintInvalidation(paintInvalidationContainer, outlineOutset)); |
| + Vector<LayoutRect> rects; |
| + addOutlineRectsForChildrenAndContinuations(rects, LayoutPoint()); |
| + LayoutRect outlineRect = unionRect(rects); |
| + if (!outlineRect.isEmpty()) { |
| + outlineRect.inflate(outlineOutset); |
| + overflowRect.unite(outlineRect); |
| } |
| - |
| - if (continuation && !continuation->isInline() && continuation->parent()) |
| - overflowRect.unite(continuation->rectWithOutlineForPaintInvalidation(paintInvalidationContainer, outlineOutset)); |
| } |
| + mapRectToPaintInvalidationBacking(paintInvalidationContainer, overflowRect, paintInvalidationState); |
| return overflowRect; |
| } |
| -LayoutRect LayoutInline::rectWithOutlineForPaintInvalidation(const LayoutBoxModelObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInvalidationState* paintInvalidationState) const |
| -{ |
| - LayoutRect r(LayoutBoxModelObject::rectWithOutlineForPaintInvalidation(paintInvalidationContainer, outlineWidth, paintInvalidationState)); |
| - for (LayoutObject* curr = firstChild(); curr; curr = curr->nextSibling()) { |
| - if (!curr->isText()) |
| - r.unite(curr->rectWithOutlineForPaintInvalidation(paintInvalidationContainer, outlineWidth, paintInvalidationState)); |
| - } |
| - return r; |
| -} |
| - |
| void LayoutInline::mapRectToPaintInvalidationBacking(const LayoutBoxModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* paintInvalidationState) const |
| { |
| if (paintInvalidationState && paintInvalidationState->canMapToContainer(paintInvalidationContainer)) { |
| @@ -1382,6 +1372,7 @@ void LayoutInline::addOutlineRects(Vector<LayoutRect>& rects, const LayoutPoint& |
| generateLineBoxRects(context); |
| addOutlineRectsForChildrenAndContinuations(rects, additionalOffset); |
| } |
| + |
|
chrishtr
2015/08/27 18:20:59
spurious
Xianzhu
2015/08/27 19:23:13
Done.
|
| void LayoutInline::addOutlineRectsForChildrenAndContinuations(Vector<LayoutRect>& rects, const LayoutPoint& additionalOffset) const |
| { |
| addOutlineRectsForNormalChildren(rects, additionalOffset); |