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

Side by Side Diff: Source/core/rendering/RenderObject.cpp

Issue 869583002: [New Multicolumn] Support dynamic insertion and removal of multicol content. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: code review Created 5 years, 11 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
« no previous file with comments | « Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 2382 matching lines...) Expand 10 before | Expand all | Expand 10 after
2393 2393
2394 void RenderObject::removeFromRenderFlowThread() 2394 void RenderObject::removeFromRenderFlowThread()
2395 { 2395 {
2396 if (flowThreadState() == NotInsideFlowThread) 2396 if (flowThreadState() == NotInsideFlowThread)
2397 return; 2397 return;
2398 2398
2399 // Sometimes we remove the element from the flow, but it's not destroyed at that time. 2399 // Sometimes we remove the element from the flow, but it's not destroyed at that time.
2400 // It's only until later when we actually destroy it and remove all the chil dren from it. 2400 // It's only until later when we actually destroy it and remove all the chil dren from it.
2401 // Currently, that happens for firstLetter elements and list markers. 2401 // Currently, that happens for firstLetter elements and list markers.
2402 // Pass in the flow thread so that we don't have to look it up for all the c hildren. 2402 // Pass in the flow thread so that we don't have to look it up for all the c hildren.
2403 removeFromRenderFlowThreadRecursive(flowThreadContainingBlock()); 2403 // If we're a column spanner, we need to use our parent to find the flow thr ead, since a spanner
2404 // doesn't have the flow thread in its containing block chain. We still need to notify the flow
2405 // thread when the renderer removed happens to be a spanner, so that we get rid of the spanner
2406 // placeholder, and column sets around the placeholder get merged.
2407 RenderFlowThread* flowThread = isColumnSpanAll() ? parent()->flowThreadConta iningBlock() : flowThreadContainingBlock();
2408 removeFromRenderFlowThreadRecursive(flowThread);
2404 } 2409 }
2405 2410
2406 void RenderObject::removeFromRenderFlowThreadRecursive(RenderFlowThread* renderF lowThread) 2411 void RenderObject::removeFromRenderFlowThreadRecursive(RenderFlowThread* renderF lowThread)
2407 { 2412 {
2408 if (const RenderObjectChildList* children = virtualChildren()) { 2413 if (const RenderObjectChildList* children = virtualChildren()) {
2409 for (RenderObject* child = children->firstChild(); child; child = child- >nextSibling()) 2414 for (RenderObject* child = children->firstChild(); child; child = child- >nextSibling())
2410 child->removeFromRenderFlowThreadRecursive(renderFlowThread); 2415 child->removeFromRenderFlowThreadRecursive(renderFlowThread);
2411 } 2416 }
2412 2417
2413 if (renderFlowThread && renderFlowThread != this) 2418 if (renderFlowThread && renderFlowThread != this)
2414 renderFlowThread->flowThreadDescendantWillBeRemoved(this); 2419 renderFlowThread->flowThreadDescendantWillBeRemoved(this);
2415 setFlowThreadState(NotInsideFlowThread); 2420 setFlowThreadState(NotInsideFlowThread);
2421 RELEASE_ASSERT(!spannerPlaceholder());
2416 } 2422 }
2417 2423
2418 void RenderObject::destroyAndCleanupAnonymousWrappers() 2424 void RenderObject::destroyAndCleanupAnonymousWrappers()
2419 { 2425 {
2420 // If the tree is destroyed, there is no need for a clean-up phase. 2426 // If the tree is destroyed, there is no need for a clean-up phase.
2421 if (documentBeingDestroyed()) { 2427 if (documentBeingDestroyed()) {
2422 destroy(); 2428 destroy();
2423 return; 2429 return;
2424 } 2430 }
2425 2431
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after
3148 { 3154 {
3149 if (object1) { 3155 if (object1) {
3150 const blink::RenderObject* root = object1; 3156 const blink::RenderObject* root = object1;
3151 while (root->parent()) 3157 while (root->parent())
3152 root = root->parent(); 3158 root = root->parent();
3153 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); 3159 root->showRenderTreeAndMark(object1, "*", object2, "-", 0);
3154 } 3160 }
3155 } 3161 }
3156 3162
3157 #endif 3163 #endif
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderMultiColumnSpannerPlaceholder.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698