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

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

Issue 9564028: Merge 108543 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1025/
Patch Set: Created 8 years, 9 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 | « LayoutTests/fast/multicol/span/textbox-not-removed-crash-expected.txt ('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) 2007 David Smith (catfish.man@gmail.com) 4 * (C) 2007 David Smith (catfish.man@gmail.com)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 } 455 }
456 456
457 RenderBlock* RenderBlock::clone() const 457 RenderBlock* RenderBlock::clone() const
458 { 458 {
459 RenderBlock* cloneBlock; 459 RenderBlock* cloneBlock;
460 if (isAnonymousBlock()) { 460 if (isAnonymousBlock()) {
461 cloneBlock = createAnonymousBlock(); 461 cloneBlock = createAnonymousBlock();
462 cloneBlock->setChildrenInline(childrenInline()); 462 cloneBlock->setChildrenInline(childrenInline());
463 } 463 }
464 else { 464 else {
465 cloneBlock = new (renderArena()) RenderBlock(node()); 465 RenderObject* cloneRenderer = node()->createRenderer(renderArena(), styl e());
466 cloneBlock = toRenderBlock(cloneRenderer);
466 cloneBlock->setStyle(style()); 467 cloneBlock->setStyle(style());
467 468
468 // This takes care of setting the right value of childrenInline in case 469 // This takes care of setting the right value of childrenInline in case
469 // generated content is added to cloneBlock and 'this' does not have 470 // generated content is added to cloneBlock and 'this' does not have
470 // generated content added yet. 471 // generated content added yet.
471 cloneBlock->setChildrenInline(cloneBlock->firstChild() ? cloneBlock->fir stChild()->isInline() : childrenInline()); 472 cloneBlock->setChildrenInline(cloneBlock->firstChild() ? cloneBlock->fir stChild()->isInline() : childrenInline());
472 } 473 }
473 return cloneBlock; 474 return cloneBlock;
474 } 475 }
475 476
476 void RenderBlock::splitBlocks(RenderBlock* fromBlock, RenderBlock* toBlock, 477 void RenderBlock::splitBlocks(RenderBlock* fromBlock, RenderBlock* toBlock,
477 RenderBlock* middleBlock, 478 RenderBlock* middleBlock,
478 RenderObject* beforeChild, RenderBoxModelObject* o ldCont) 479 RenderObject* beforeChild, RenderBoxModelObject* o ldCont)
479 { 480 {
480 // Create a clone of this inline. 481 // Create a clone of this inline.
481 RenderBlock* cloneBlock = clone(); 482 RenderBlock* cloneBlock = clone();
482 if (!isAnonymousBlock()) 483 if (!isAnonymousBlock())
483 cloneBlock->setContinuation(oldCont); 484 cloneBlock->setContinuation(oldCont);
484 485
486 if (!beforeChild && isAfterContent(lastChild()))
487 beforeChild = lastChild();
488
489 // If we are moving inline children from |this| to cloneBlock, then we need
490 // to clear our line box tree.
491 if (beforeChild && childrenInline())
492 deleteLineBoxTree();
493
485 // Now take all of the children from beforeChild to the end and remove 494 // Now take all of the children from beforeChild to the end and remove
486 // them from |this| and place them in the clone. 495 // them from |this| and place them in the clone.
487 if (!beforeChild && isAfterContent(lastChild()))
488 beforeChild = lastChild();
489 moveChildrenTo(cloneBlock, beforeChild, 0, true); 496 moveChildrenTo(cloneBlock, beforeChild, 0, true);
490 497
491 // Hook |clone| up as the continuation of the middle block. 498 // Hook |clone| up as the continuation of the middle block.
492 if (!cloneBlock->isAnonymousBlock()) 499 if (!cloneBlock->isAnonymousBlock())
493 middleBlock->setContinuation(cloneBlock); 500 middleBlock->setContinuation(cloneBlock);
494 501
495 // We have been reparented and are now under the fromBlock. We need 502 // We have been reparented and are now under the fromBlock. We need
496 // to walk up our block parent chain until we hit the containing anonymous c olumns block. 503 // to walk up our block parent chain until we hit the containing anonymous c olumns block.
497 // Once we hit the anonymous columns block we're done. 504 // Once we hit the anonymous columns block we're done.
498 RenderBoxModelObject* curr = toRenderBoxModelObject(parent()); 505 RenderBoxModelObject* curr = toRenderBoxModelObject(parent());
(...skipping 6695 matching lines...) Expand 10 before | Expand all | Expand 10 after
7194 } 7201 }
7195 7202
7196 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl oatingObject* floatingObject) 7203 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl oatingObject* floatingObject)
7197 { 7204 {
7198 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x( ), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); 7205 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x( ), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY());
7199 } 7206 }
7200 7207
7201 #endif 7208 #endif
7202 7209
7203 } // namespace WebCore 7210 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/fast/multicol/span/textbox-not-removed-crash-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698