| 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();
|
| }
|
|
|