Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: Source/WebCore/rendering/RenderObjectChildList.cpp

Issue 10911116: Merge 126048 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1229/
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 3 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 firstChild()->destroy(); 56 firstChild()->destroy();
57 } else { 57 } else {
58 // Destroy any anonymous children remaining in the render tree, as w ell as implicit (shadow) DOM elements like those used in the engine-based text f ields. 58 // Destroy any anonymous children remaining in the render tree, as w ell as implicit (shadow) DOM elements like those used in the engine-based text f ields.
59 if (firstChild()->node()) 59 if (firstChild()->node())
60 firstChild()->node()->setRenderer(0); 60 firstChild()->node()->setRenderer(0);
61 firstChild()->destroy(); 61 firstChild()->destroy();
62 } 62 }
63 } 63 }
64 } 64 }
65 65
66 RenderObject* RenderObjectChildList::removeChildNode(RenderObject* owner, Render Object* oldChild, bool fullRemove) 66 RenderObject* RenderObjectChildList::removeChildNode(RenderObject* owner, Render Object* oldChild, bool notifyRenderer)
67 { 67 {
68 ASSERT(oldChild->parent() == owner); 68 ASSERT(oldChild->parent() == owner);
69 69
70 if (oldChild->isFloatingOrOutOfFlowPositioned()) 70 if (oldChild->isFloatingOrOutOfFlowPositioned())
71 toRenderBox(oldChild)->removeFloatingOrPositionedChildFromBlockLists(); 71 toRenderBox(oldChild)->removeFloatingOrPositionedChildFromBlockLists();
72 72
73 // So that we'll get the appropriate dirty bit set (either that a normal flo w child got yanked or 73 // So that we'll get the appropriate dirty bit set (either that a normal flo w child got yanked or
74 // that a positioned child got yanked). We also repaint, so that the area e xposed when the child 74 // that a positioned child got yanked). We also repaint, so that the area e xposed when the child
75 // disappears gets repainted properly. 75 // disappears gets repainted properly.
76 if (!owner->documentBeingDestroyed() && fullRemove && oldChild->everHadLayou t()) { 76 if (!owner->documentBeingDestroyed() && notifyRenderer && oldChild->everHadL ayout()) {
77 oldChild->setNeedsLayoutAndPrefWidthsRecalc(); 77 oldChild->setNeedsLayoutAndPrefWidthsRecalc();
78 if (oldChild->isBody()) 78 if (oldChild->isBody())
79 owner->view()->repaint(); 79 owner->view()->repaint();
80 else 80 else
81 oldChild->repaint(); 81 oldChild->repaint();
82 } 82 }
83 83
84 // If we have a line box wrapper, delete it. 84 // If we have a line box wrapper, delete it.
85 if (oldChild->isBox()) 85 if (oldChild->isBox())
86 toRenderBox(oldChild)->deleteLineBoxWrapper(); 86 toRenderBox(oldChild)->deleteLineBoxWrapper();
87 87
88 if (!owner->documentBeingDestroyed() && fullRemove) { 88 if (!owner->documentBeingDestroyed() && notifyRenderer)
89 // if we remove visible child from an invisible parent, we don't know th e layer visibility any more 89 oldChild->willBeRemovedFromTree();
90 RenderLayer* layer = 0;
91 if (owner->style()->visibility() != VISIBLE && oldChild->style()->visibi lity() == VISIBLE && !oldChild->hasLayer()) {
92 if ((layer = owner->enclosingLayer()))
93 layer->dirtyVisibleContentStatus();
94 }
95
96 // Keep our layer hierarchy updated.
97 if (oldChild->firstChild() || oldChild->hasLayer()) {
98 if (!layer)
99 layer = owner->enclosingLayer();
100 oldChild->removeLayers(layer);
101 }
102
103 if (oldChild->isListItem())
104 toRenderListItem(oldChild)->updateListMarkerNumbers();
105
106 if (oldChild->isOutOfFlowPositioned() && owner->childrenInline())
107 owner->dirtyLinesFromChangedChild(oldChild);
108
109 if (oldChild->isRenderRegion())
110 toRenderRegion(oldChild)->detachRegion();
111
112 if (oldChild->isQuote())
113 toRenderQuote(oldChild)->detachQuote();
114
115 if (oldChild->inRenderFlowThread()) {
116 if (oldChild->isBox())
117 oldChild->enclosingRenderFlowThread()->removeRenderBoxRegionInfo (toRenderBox(oldChild));
118 oldChild->enclosingRenderFlowThread()->clearRenderObjectCustomStyle( oldChild);
119 }
120
121 if (RenderNamedFlowThread* containerFlowThread = owner->enclosingRenderN amedFlowThread())
122 containerFlowThread->removeFlowChild(oldChild);
123
124 #if ENABLE(SVG)
125 // Update cached boundaries in SVG renderers, if a child is removed.
126 owner->setNeedsBoundariesUpdate();
127 #endif
128 }
129 90
130 // If oldChild is the start or end of the selection, then clear the selectio n to 91 // If oldChild is the start or end of the selection, then clear the selectio n to
131 // avoid problems of invalid pointers. 92 // avoid problems of invalid pointers.
132 // FIXME: The FrameSelection should be responsible for this when it 93 // FIXME: The FrameSelection should be responsible for this when it
133 // is notified of DOM mutations. 94 // is notified of DOM mutations.
134 if (!owner->documentBeingDestroyed() && oldChild->isSelectionBorder()) 95 if (!owner->documentBeingDestroyed() && oldChild->isSelectionBorder())
135 owner->view()->clearSelection(); 96 owner->view()->clearSelection();
136 97
137 // remove the child 98 // remove the child
138 if (oldChild->previousSibling()) 99 if (oldChild->previousSibling())
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 if (!generatedContentContainer) 467 if (!generatedContentContainer)
507 return; 468 return;
508 469
509 // Handle placement of run-ins. We do the run-in placement at the end since generatedContentContainer can get destroyed. 470 // Handle placement of run-ins. We do the run-in placement at the end since generatedContentContainer can get destroyed.
510 RenderObject* generatedContentContainerImmediateParent = generatedContentCon tainer->parent(); 471 RenderObject* generatedContentContainerImmediateParent = generatedContentCon tainer->parent();
511 if (generatedContentContainerImmediateParent->isRenderBlock()) 472 if (generatedContentContainerImmediateParent->isRenderBlock())
512 toRenderBlock(generatedContentContainerImmediateParent)->placeRunInIfNee ded(generatedContentContainer, PlaceGeneratedRunIn); 473 toRenderBlock(generatedContentContainerImmediateParent)->placeRunInIfNee ded(generatedContentContainer, PlaceGeneratedRunIn);
513 } 474 }
514 475
515 } // namespace WebCore 476 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/RenderObjectChildList.h ('k') | Source/WebCore/rendering/RenderQuote.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698