diff options
author | Steve Block <steveblock@google.com> | 2012-04-13 07:51:17 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-04-13 07:51:17 -0700 |
commit | 6db940d5b0fdc1d28edd7851ed30885e5f7d0dc8 (patch) | |
tree | f1eaeb3debe91de907f80e3864b2f49d65f73f17 /Source/WebCore/rendering | |
parent | 3dad91f1d1975439d8c7972f0269dba2d236284c (diff) | |
parent | 5eb142cf16d1349544dc19cfb780917d36fbf3b6 (diff) | |
download | external_webkit-6db940d5b0fdc1d28edd7851ed30885e5f7d0dc8.zip external_webkit-6db940d5b0fdc1d28edd7851ed30885e5f7d0dc8.tar.gz external_webkit-6db940d5b0fdc1d28edd7851ed30885e5f7d0dc8.tar.bz2 |
Merge changes Icc964ad0,Ib21562da,I87cfd2aa,I2d4208a2
* changes:
Cherry-pick WebKit change r107627 to fix a LayoutTest crash
Cherry-pick WebKit change r94541 as a prerequisite for r107627
Cherry-pick WebKit change r88854 as a prerequisite for r107627
Cherry-pick WebKit change r106251 to fix a LayoutTest crash
Diffstat (limited to 'Source/WebCore/rendering')
-rw-r--r-- | Source/WebCore/rendering/RenderBlock.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/Source/WebCore/rendering/RenderBlock.cpp b/Source/WebCore/rendering/RenderBlock.cpp index 5cef4cf..a3bd41a 100644 --- a/Source/WebCore/rendering/RenderBlock.cpp +++ b/Source/WebCore/rendering/RenderBlock.cpp @@ -420,14 +420,18 @@ void RenderBlock::addChildToAnonymousColumnBlocks(RenderObject* newChild, Render RenderBlock* RenderBlock::containingColumnsBlock(bool allowAnonymousColumnBlock) { + RenderBlock* firstChildIgnoringAnonymousWrappers = 0; for (RenderObject* curr = this; curr; curr = curr->parent()) { if (!curr->isRenderBlock() || curr->isFloatingOrPositioned() || curr->isTableCell() || curr->isRoot() || curr->isRenderView() || curr->hasOverflowClip() || curr->isInlineBlockOrInlineTable()) return 0; RenderBlock* currBlock = toRenderBlock(curr); + if (!currBlock->createsAnonymousWrapper()) + firstChildIgnoringAnonymousWrappers = currBlock; + if (currBlock->style()->specifiesColumns() && (allowAnonymousColumnBlock || !currBlock->isAnonymousColumnsBlock())) - return currBlock; + return firstChildIgnoringAnonymousWrappers; if (currBlock->isAnonymousColumnSpanBlock()) return 0; @@ -661,10 +665,19 @@ RenderBlock* RenderBlock::columnsBlockForSpanningElement(RenderObject* newChild) RenderBlock* columnsBlockAncestor = 0; if (!newChild->isText() && newChild->style()->columnSpan() && !newChild->isBeforeOrAfterContent() && !newChild->isFloatingOrPositioned() && !newChild->isInline() && !isAnonymousColumnSpanBlock()) { - if (style()->specifiesColumns()) - columnsBlockAncestor = this; - else if (parent() && parent()->isRenderBlock()) - columnsBlockAncestor = toRenderBlock(parent())->containingColumnsBlock(false); + columnsBlockAncestor = containingColumnsBlock(false); + if (columnsBlockAncestor) { + // Make sure that none of the parent ancestors have a continuation. + // If yes, we do not want split the block into continuations. + RenderObject* curr = this; + while (curr && curr != columnsBlockAncestor) { + if (curr->isRenderBlock() && toRenderBlock(curr)->continuation()) { + columnsBlockAncestor = 0; + break; + } + curr = curr->parent(); + } + } } return columnsBlockAncestor; } |