Index: Source/WebCore/rendering/RenderObject.cpp |
=================================================================== |
--- Source/WebCore/rendering/RenderObject.cpp (revision 101036) |
+++ Source/WebCore/rendering/RenderObject.cpp (working copy) |
@@ -268,6 +268,16 @@ |
return node() && node()->renderer() == this && node()->hasTagName(marqueeTag); |
} |
+static bool isBeforeAfterContentGeneratedByAncestor(RenderObject* renderer, RenderObject* beforeAfterContent) |
+{ |
+ while (renderer) { |
+ if (renderer->generatingNode() == beforeAfterContent->generatingNode()) |
+ return true; |
+ renderer = renderer->parent(); |
+ } |
+ return false; |
+} |
+ |
void RenderObject::addChild(RenderObject* newChild, RenderObject* beforeChild) |
{ |
RenderObjectChildList* children = virtualChildren(); |
@@ -278,9 +288,9 @@ |
RenderObject* beforeContent = 0; |
bool beforeChildHasBeforeAndAfterContent = false; |
if (beforeChild && (beforeChild->isTable() || beforeChild->isTableSection() || beforeChild->isTableRow() || beforeChild->isTableCell())) { |
- beforeContent = beforeChild->findBeforeContentRenderer(); |
- RenderObject* afterContent = beforeChild->findAfterContentRenderer(); |
- if (beforeContent && afterContent) { |
+ beforeContent = beforeChild->beforePseudoElementRenderer(); |
+ RenderObject* afterContent = beforeChild->afterPseudoElementRenderer(); |
+ if (beforeContent && afterContent && isBeforeAfterContentGeneratedByAncestor(this, beforeContent)) { |
beforeChildHasBeforeAndAfterContent = true; |
beforeContent->destroy(); |
} |