| Index: Source/WebCore/rendering/RenderBlock.cpp
|
| ===================================================================
|
| --- Source/WebCore/rendering/RenderBlock.cpp (revision 109397)
|
| +++ Source/WebCore/rendering/RenderBlock.cpp (working copy)
|
| @@ -429,14 +429,18 @@
|
|
|
| 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;
|
| @@ -673,22 +677,17 @@
|
| RenderBlock* columnsBlockAncestor = 0;
|
| if (!newChild->isText() && newChild->style()->columnSpan() && !newChild->isBeforeOrAfterContent()
|
| && !newChild->isFloatingOrPositioned() && !newChild->isInline() && !isAnonymousColumnSpanBlock()) {
|
| - if (style()->specifiesColumns())
|
| - columnsBlockAncestor = this;
|
| - else if (!isInline() && parent() && parent()->isRenderBlock()) {
|
| - columnsBlockAncestor = toRenderBlock(parent())->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();
|
| + 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();
|
| }
|
| }
|
| }
|
|
|