| Index: Source/core/layout/LayoutBlockFlowLine.cpp
|
| diff --git a/Source/core/layout/LayoutBlockFlowLine.cpp b/Source/core/layout/LayoutBlockFlowLine.cpp
|
| index 77c6656f3981fdf33291fa5d194d91a5ee82645a..9ccc684648b2101b27be4dabf5679df89e0ec2e4 100644
|
| --- a/Source/core/layout/LayoutBlockFlowLine.cpp
|
| +++ b/Source/core/layout/LayoutBlockFlowLine.cpp
|
| @@ -1492,6 +1492,11 @@ void LayoutBlockFlow::computeInlinePreferredLogicalWidths(LayoutUnit& minLogical
|
| maxLogicalWidth = std::max(maxLogicalWidth, inlineMax);
|
| }
|
|
|
| +static bool isInlineWithOutlineAndContinuation(const LayoutObject& o)
|
| +{
|
| + return o.isLayoutInline() && o.styleRef().hasOutline() && !o.isElementContinuation() && toLayoutInline(o).continuation();
|
| +}
|
| +
|
| void LayoutBlockFlow::layoutInlineChildren(bool relayoutChildren, LayoutUnit& paintInvalidationLogicalTop, LayoutUnit& paintInvalidationLogicalBottom, LayoutUnit afterEdge)
|
| {
|
| LayoutFlowThread* flowThread = flowThreadContainingBlock();
|
| @@ -1566,6 +1571,9 @@ void LayoutBlockFlow::layoutInlineChildren(bool relayoutChildren, LayoutUnit& pa
|
| dirtyLineBoxesForObject(o, layoutState.isFullLayout());
|
| o->clearNeedsLayout();
|
| }
|
| +
|
| + if (isInlineWithOutlineAndContinuation(*o))
|
| + setContainsInlineWithOutlineAndContinuation(true);
|
| }
|
|
|
| for (size_t i = 0; i < replacedChildren.size(); i++)
|
| @@ -1854,6 +1862,24 @@ void LayoutBlockFlow::addOverflowFromInlineChildren()
|
| LayoutRect visualOverflow = curr->visualOverflowRect(curr->lineTop(), curr->lineBottom());
|
| addContentsVisualOverflow(visualOverflow);
|
| }
|
| +
|
| + if (!containsInlineWithOutlineAndContinuation())
|
| + return;
|
| +
|
| + // Add outline rects of continuations of descendant inlines into visual overflow of this block.
|
| + LayoutRect outlineBoundsOfAllContinuations;
|
| + for (InlineWalker walker(this); !walker.atEnd(); walker.advance()) {
|
| + const LayoutObject& o = *walker.current();
|
| + if (!isInlineWithOutlineAndContinuation(o))
|
| + continue;
|
| +
|
| + Vector<LayoutRect> outlineRects;
|
| + toLayoutInline(o).addOutlineRectsForContinuations(outlineRects, LayoutPoint());
|
| + LayoutRect outlineBounds = unionRect(outlineRects);
|
| + outlineBounds.inflate(o.styleRef().outlineOutsetExtent());
|
| + outlineBoundsOfAllContinuations.unite(outlineBounds);
|
| + }
|
| + addContentsVisualOverflow(outlineBoundsOfAllContinuations);
|
| }
|
|
|
| void LayoutBlockFlow::deleteEllipsisLineBoxes()
|
|
|