| Index: third_party/WebKit/WebCore/rendering/RenderBlock.cpp
|
| ===================================================================
|
| --- third_party/WebKit/WebCore/rendering/RenderBlock.cpp (revision 9391)
|
| +++ third_party/WebKit/WebCore/rendering/RenderBlock.cpp (working copy)
|
| @@ -1005,9 +1005,14 @@
|
| RenderInline* inlineRunIn = new (renderArena()) RenderInline(blockRunIn->node());
|
| inlineRunIn->setStyle(blockRunIn->style());
|
|
|
| - // Move the nodes from the old child to the new child.
|
| - for (RenderObject* runInChild = blockRunIn->firstChild(); runInChild; runInChild = runInChild->nextSibling())
|
| - moveChild(inlineRunIn, inlineRunIn->children(), blockRunIn, blockRunIn->children(), runInChild);
|
| + // 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.
|
| + for (RenderObject* runInChild = blockRunIn->firstChild(); runInChild; runInChild = runInChild->nextSibling()) {
|
| + if (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.
|
| + }
|
| + }
|
|
|
| // Now insert the new child under |currBlock|.
|
| currBlock->children()->insertChildNode(currBlock, inlineRunIn, currBlock->firstChild());
|
| @@ -3918,7 +3923,7 @@
|
| return 0;
|
| }
|
|
|
| -static int getBorderPaddingMargin(const RenderBox* child, bool endOfInline)
|
| +static int getBorderPaddingMargin(const RenderBoxModelObject* child, bool endOfInline)
|
| {
|
| RenderStyle* cstyle = child->style();
|
| int result = 0;
|
| @@ -4021,7 +4026,7 @@
|
| if (child->isRenderInline()) {
|
| // Add in padding/border/margin from the appropriate side of
|
| // the element.
|
| - int bpm = getBorderPaddingMargin(static_cast<RenderBox*>(child), childIterator.endOfInline);
|
| + int bpm = getBorderPaddingMargin(toRenderInline(child), childIterator.endOfInline);
|
| childMin += bpm;
|
| childMax += bpm;
|
|
|
|
|