Index: Source/WebCore/rendering/RenderObjectChildList.cpp |
=================================================================== |
--- Source/WebCore/rendering/RenderObjectChildList.cpp (revision 127656) |
+++ Source/WebCore/rendering/RenderObjectChildList.cpp (working copy) |
@@ -63,7 +63,7 @@ |
} |
} |
-RenderObject* RenderObjectChildList::removeChildNode(RenderObject* owner, RenderObject* oldChild, bool fullRemove) |
+RenderObject* RenderObjectChildList::removeChildNode(RenderObject* owner, RenderObject* oldChild, bool notifyRenderer) |
{ |
ASSERT(oldChild->parent() == owner); |
@@ -73,7 +73,7 @@ |
// So that we'll get the appropriate dirty bit set (either that a normal flow child got yanked or |
// that a positioned child got yanked). We also repaint, so that the area exposed when the child |
// disappears gets repainted properly. |
- if (!owner->documentBeingDestroyed() && fullRemove && oldChild->everHadLayout()) { |
+ if (!owner->documentBeingDestroyed() && notifyRenderer && oldChild->everHadLayout()) { |
oldChild->setNeedsLayoutAndPrefWidthsRecalc(); |
if (oldChild->isBody()) |
owner->view()->repaint(); |
@@ -85,47 +85,8 @@ |
if (oldChild->isBox()) |
toRenderBox(oldChild)->deleteLineBoxWrapper(); |
- if (!owner->documentBeingDestroyed() && fullRemove) { |
- // if we remove visible child from an invisible parent, we don't know the layer visibility any more |
- RenderLayer* layer = 0; |
- if (owner->style()->visibility() != VISIBLE && oldChild->style()->visibility() == VISIBLE && !oldChild->hasLayer()) { |
- if ((layer = owner->enclosingLayer())) |
- layer->dirtyVisibleContentStatus(); |
- } |
- |
- // Keep our layer hierarchy updated. |
- if (oldChild->firstChild() || oldChild->hasLayer()) { |
- if (!layer) |
- layer = owner->enclosingLayer(); |
- oldChild->removeLayers(layer); |
- } |
- |
- if (oldChild->isListItem()) |
- toRenderListItem(oldChild)->updateListMarkerNumbers(); |
- |
- if (oldChild->isOutOfFlowPositioned() && owner->childrenInline()) |
- owner->dirtyLinesFromChangedChild(oldChild); |
- |
- if (oldChild->isRenderRegion()) |
- toRenderRegion(oldChild)->detachRegion(); |
- |
- if (oldChild->isQuote()) |
- toRenderQuote(oldChild)->detachQuote(); |
- |
- if (oldChild->inRenderFlowThread()) { |
- if (oldChild->isBox()) |
- oldChild->enclosingRenderFlowThread()->removeRenderBoxRegionInfo(toRenderBox(oldChild)); |
- oldChild->enclosingRenderFlowThread()->clearRenderObjectCustomStyle(oldChild); |
- } |
- |
- if (RenderNamedFlowThread* containerFlowThread = owner->enclosingRenderNamedFlowThread()) |
- containerFlowThread->removeFlowChild(oldChild); |
- |
-#if ENABLE(SVG) |
- // Update cached boundaries in SVG renderers, if a child is removed. |
- owner->setNeedsBoundariesUpdate(); |
-#endif |
- } |
+ if (!owner->documentBeingDestroyed() && notifyRenderer) |
+ oldChild->willBeRemovedFromTree(); |
// If oldChild is the start or end of the selection, then clear the selection to |
// avoid problems of invalid pointers. |