Index: Source/WebCore/rendering/InlineFlowBox.cpp |
=================================================================== |
--- Source/WebCore/rendering/InlineFlowBox.cpp (revision 79910) |
+++ Source/WebCore/rendering/InlineFlowBox.cpp (working copy) |
@@ -940,13 +940,20 @@ |
RenderBlock* cb = 0; |
bool containingBlockPaintsContinuationOutline = inlineFlow->continuation() || inlineFlow->isInlineElementContinuation(); |
- if (containingBlockPaintsContinuationOutline) { |
- cb = renderer()->containingBlock()->containingBlock(); |
- |
- for (RenderBoxModelObject* box = boxModelObject(); box != cb; box = box->parent()->enclosingBoxModelObject()) { |
- if (box->hasSelfPaintingLayer()) { |
- containingBlockPaintsContinuationOutline = false; |
- break; |
+ if (containingBlockPaintsContinuationOutline) { |
+ // FIXME: See https://bugs.webkit.org/show_bug.cgi?id=54690. We currently don't reconnect inline continuations |
+ // after a child removal. As a result, those merged inlines do not get seperated and hence not get enclosed by |
+ // anonymous blocks. In this case, it is better to bail out and paint it ourself. |
+ RenderBlock* enclosingAnonymousBlock = renderer()->containingBlock(); |
+ if (!enclosingAnonymousBlock->isAnonymousBlock()) |
+ containingBlockPaintsContinuationOutline = false; |
+ else { |
+ cb = enclosingAnonymousBlock->containingBlock(); |
+ for (RenderBoxModelObject* box = boxModelObject(); box != cb; box = box->parent()->enclosingBoxModelObject()) { |
+ if (box->hasSelfPaintingLayer()) { |
+ containingBlockPaintsContinuationOutline = false; |
+ break; |
+ } |
} |
} |
} |