summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/rendering
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2012-04-13 07:51:17 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-13 07:51:17 -0700
commit6db940d5b0fdc1d28edd7851ed30885e5f7d0dc8 (patch)
treef1eaeb3debe91de907f80e3864b2f49d65f73f17 /Source/WebCore/rendering
parent3dad91f1d1975439d8c7972f0269dba2d236284c (diff)
parent5eb142cf16d1349544dc19cfb780917d36fbf3b6 (diff)
downloadexternal_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.cpp23
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;
}