| Index: Source/WebCore/rendering/RenderBlock.cpp
|
| ===================================================================
|
| --- Source/WebCore/rendering/RenderBlock.cpp (revision 101038)
|
| +++ Source/WebCore/rendering/RenderBlock.cpp (working copy)
|
| @@ -1595,6 +1595,16 @@
|
|
|
| RenderBlock* currBlock = toRenderBlock(curr);
|
|
|
| + // First we destroy any :before/:after content. It will be regenerated by the new inline.
|
| + // Exception is if the run-in itself is generated.
|
| + if (child->style()->styleType() != BEFORE && child->style()->styleType() != AFTER) {
|
| + RenderObject* generatedContent;
|
| + if (child->getCachedPseudoStyle(BEFORE) && (generatedContent = child->beforePseudoElementRenderer()))
|
| + generatedContent->destroy();
|
| + if (child->getCachedPseudoStyle(AFTER) && (generatedContent = child->afterPseudoElementRenderer()))
|
| + generatedContent->destroy();
|
| + }
|
| +
|
| // Remove the old child.
|
| children()->removeChildNode(this, blockRunIn);
|
|
|
| @@ -1603,16 +1613,11 @@
|
| RenderInline* inlineRunIn = new (renderArena()) RenderInline(runInNode ? runInNode : document());
|
| inlineRunIn->setStyle(blockRunIn->style());
|
|
|
| - bool runInIsGenerated = child->style()->styleType() == BEFORE || child->style()->styleType() == AFTER;
|
| -
|
| - // Move the nodes from the old child to the new child, but skip any :before/:after content. It has already
|
| - // been regenerated by the new inline.
|
| + // Move the nodes from the old child to the new child
|
| for (RenderObject* runInChild = blockRunIn->firstChild(); runInChild;) {
|
| RenderObject* nextSibling = runInChild->nextSibling();
|
| - if (runInIsGenerated || (runInChild->style()->styleType() != BEFORE && runInChild->style()->styleType() != AFTER)) {
|
| - blockRunIn->children()->removeChildNode(blockRunIn, runInChild, false);
|
| - inlineRunIn->addChild(runInChild); // Use addChild instead of appendChildNode since it handles correct placement of the children relative to :after-generated content.
|
| - }
|
| + blockRunIn->children()->removeChildNode(blockRunIn, runInChild, false);
|
| + inlineRunIn->addChild(runInChild); // Use addChild instead of appendChildNode since it handles correct placement of the children relative to :after-generated content.
|
| runInChild = nextSibling;
|
| }
|
|
|
|
|