| Index: Source/core/rendering/RenderBlockFlow.cpp
|
| diff --git a/Source/core/rendering/RenderBlockFlow.cpp b/Source/core/rendering/RenderBlockFlow.cpp
|
| index 840108dd5a2c728bf4f935408859f787da4632f2..c25c1678ff0989ece0e44446b61b9fc5fad02f72 100644
|
| --- a/Source/core/rendering/RenderBlockFlow.cpp
|
| +++ b/Source/core/rendering/RenderBlockFlow.cpp
|
| @@ -145,7 +145,7 @@ static bool inNormalFlow(RenderBox* child)
|
| RenderBlock* curr = child->containingBlock();
|
| RenderView* renderView = child->view();
|
| while (curr && curr != renderView) {
|
| - if (curr->hasColumns() || curr->isRenderFlowThread())
|
| + if (curr->isRenderFlowThread())
|
| return true;
|
| if (curr->isFloatingOrOutOfFlowPositioned())
|
| return false;
|
| @@ -187,59 +187,6 @@ void RenderBlockFlow::willBeDestroyed()
|
| RenderBlock::willBeDestroyed();
|
| }
|
|
|
| -bool RenderBlockFlow::relayoutForPagination(bool hasSpecifiedPageLogicalHeight, LayoutUnit pageLogicalHeight, LayoutStateMaintainer& statePusher)
|
| -{
|
| - if (!hasColumns())
|
| - return false;
|
| -
|
| - OwnPtr<RenderOverflow> savedOverflow = m_overflow.release();
|
| - if (childrenInline())
|
| - addOverflowFromInlineChildren();
|
| - else
|
| - addOverflowFromBlockChildren();
|
| - LayoutUnit layoutOverflowLogicalBottom = (isHorizontalWritingMode() ? layoutOverflowRect().maxY() : layoutOverflowRect().maxX()) - borderBefore() - paddingBefore();
|
| -
|
| - // FIXME: We don't balance properly at all in the presence of forced page breaks. We need to understand what
|
| - // the distance between forced page breaks is so that we can avoid making the minimum column height too tall.
|
| - ColumnInfo* colInfo = columnInfo();
|
| - if (!hasSpecifiedPageLogicalHeight) {
|
| - LayoutUnit columnHeight = pageLogicalHeight;
|
| - int minColumnCount = colInfo->forcedBreaks() + 1;
|
| - int desiredColumnCount = colInfo->desiredColumnCount();
|
| - if (minColumnCount >= desiredColumnCount) {
|
| - // The forced page breaks are in control of the balancing. Just set the column height to the
|
| - // maximum page break distance.
|
| - if (!pageLogicalHeight) {
|
| - LayoutUnit distanceBetweenBreaks = max<LayoutUnit>(colInfo->maximumDistanceBetweenForcedBreaks(),
|
| - view()->layoutState()->pageLogicalOffset(this, borderBefore() + paddingBefore() + layoutOverflowLogicalBottom) - colInfo->forcedBreakOffset());
|
| - columnHeight = max(colInfo->minimumColumnHeight(), distanceBetweenBreaks);
|
| - }
|
| - } else if (layoutOverflowLogicalBottom > boundedMultiply(pageLogicalHeight, desiredColumnCount)) {
|
| - // Now that we know the intrinsic height of the columns, we have to rebalance them.
|
| - columnHeight = max<LayoutUnit>(colInfo->minimumColumnHeight(), ceilf((float)layoutOverflowLogicalBottom / desiredColumnCount));
|
| - }
|
| -
|
| - if (columnHeight && columnHeight != pageLogicalHeight) {
|
| - statePusher.pop();
|
| - setEverHadLayout(true);
|
| - layoutBlockFlow(false, columnHeight);
|
| - return true;
|
| - }
|
| - }
|
| -
|
| - if (pageLogicalHeight)
|
| - colInfo->setColumnCountAndHeight(ceilf((float)layoutOverflowLogicalBottom / pageLogicalHeight), pageLogicalHeight);
|
| -
|
| - if (columnCount(colInfo)) {
|
| - setLogicalHeight(borderBefore() + paddingBefore() + colInfo->columnHeight() + borderAfter() + paddingAfter() + scrollbarLogicalHeight());
|
| - m_overflow.clear();
|
| - } else {
|
| - m_overflow = savedOverflow.release();
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| bool RenderBlockFlow::isSelfCollapsingBlock() const
|
| {
|
| m_hasOnlySelfCollapsingChildren = RenderBlock::isSelfCollapsingBlock();
|
| @@ -251,7 +198,7 @@ void RenderBlockFlow::layoutBlock(bool relayoutChildren)
|
| layoutBlockFlow(relayoutChildren);
|
| }
|
|
|
| -inline void RenderBlockFlow::layoutBlockFlow(bool relayoutChildren, LayoutUnit pageLogicalHeight)
|
| +inline void RenderBlockFlow::layoutBlockFlow(bool relayoutChildren)
|
| {
|
| ASSERT(needsLayout());
|
| ASSERT(isInlineBlockOrInlineTable() || !isInline());
|
| @@ -271,12 +218,13 @@ inline void RenderBlockFlow::layoutBlockFlow(bool relayoutChildren, LayoutUnit p
|
|
|
| rebuildFloatsFromIntruding();
|
|
|
| + LayoutUnit pageLogicalHeight;
|
| bool pageLogicalHeightChanged = false;
|
| bool hasSpecifiedPageLogicalHeight = false;
|
| checkForPaginationLogicalHeightChange(pageLogicalHeight, pageLogicalHeightChanged, hasSpecifiedPageLogicalHeight);
|
|
|
| RenderView* renderView = view();
|
| - LayoutStateMaintainer statePusher(renderView, this, locationOffset(), hasColumns() || hasTransform() || hasReflection() || style()->isFlippedBlocksWritingMode(), pageLogicalHeight, pageLogicalHeightChanged, columnInfo());
|
| + LayoutStateMaintainer statePusher(renderView, this, locationOffset(), hasTransform() || hasReflection() || style()->isFlippedBlocksWritingMode(), pageLogicalHeight, pageLogicalHeightChanged);
|
|
|
| // Regions changing widths can force us to relayout our children.
|
| RenderFlowThread* flowThread = flowThreadContainingBlock();
|
| @@ -1530,15 +1478,12 @@ bool RenderBlockFlow::mustSeparateMarginAfterForChild(const RenderBox* child) co
|
| LayoutUnit RenderBlockFlow::applyBeforeBreak(RenderBox* child, LayoutUnit logicalOffset)
|
| {
|
| // FIXME: Add page break checking here when we support printing.
|
| - bool checkColumnBreaks = view()->layoutState()->isPaginatingColumns();
|
| - bool checkPageBreaks = !checkColumnBreaks && view()->layoutState()->m_pageLogicalHeight; // FIXME: Once columns can print we have to check this.
|
| + bool checkPageBreaks = view()->layoutState()->m_pageLogicalHeight; // FIXME: Once columns can print we have to check this.
|
| RenderFlowThread* flowThread = flowThreadContainingBlock();
|
| bool checkRegionBreaks = flowThread && flowThread->isRenderNamedFlowThread();
|
| - bool checkBeforeAlways = (checkColumnBreaks && child->style()->columnBreakBefore() == PBALWAYS) || (checkPageBreaks && child->style()->pageBreakBefore() == PBALWAYS)
|
| + bool checkBeforeAlways = (checkPageBreaks && child->style()->pageBreakBefore() == PBALWAYS)
|
| || (checkRegionBreaks && child->style()->regionBreakBefore() == PBALWAYS);
|
| if (checkBeforeAlways && inNormalFlow(child) && hasNextPage(logicalOffset, IncludePageBoundary)) {
|
| - if (checkColumnBreaks)
|
| - view()->layoutState()->addForcedColumnBreak(child, logicalOffset);
|
| if (checkRegionBreaks) {
|
| LayoutUnit offsetBreakAdjustment = 0;
|
| if (flowThread->addForcedRegionBreak(offsetFromLogicalTopOfFirstPage() + logicalOffset, child, true, &offsetBreakAdjustment))
|
| @@ -1552,11 +1497,10 @@ LayoutUnit RenderBlockFlow::applyBeforeBreak(RenderBox* child, LayoutUnit logica
|
| LayoutUnit RenderBlockFlow::applyAfterBreak(RenderBox* child, LayoutUnit logicalOffset, MarginInfo& marginInfo)
|
| {
|
| // FIXME: Add page break checking here when we support printing.
|
| - bool checkColumnBreaks = view()->layoutState()->isPaginatingColumns();
|
| - bool checkPageBreaks = !checkColumnBreaks && view()->layoutState()->m_pageLogicalHeight; // FIXME: Once columns can print we have to check this.
|
| + bool checkPageBreaks = view()->layoutState()->m_pageLogicalHeight; // FIXME: Once columns can print we have to check this.
|
| RenderFlowThread* flowThread = flowThreadContainingBlock();
|
| bool checkRegionBreaks = flowThread && flowThread->isRenderNamedFlowThread();
|
| - bool checkAfterAlways = (checkColumnBreaks && child->style()->columnBreakAfter() == PBALWAYS) || (checkPageBreaks && child->style()->pageBreakAfter() == PBALWAYS)
|
| + bool checkAfterAlways = (checkPageBreaks && child->style()->pageBreakAfter() == PBALWAYS)
|
| || (checkRegionBreaks && child->style()->regionBreakAfter() == PBALWAYS);
|
| if (checkAfterAlways && inNormalFlow(child) && hasNextPage(logicalOffset, IncludePageBoundary)) {
|
| LayoutUnit marginOffset = marginInfo.canCollapseWithMarginBefore() ? LayoutUnit() : marginInfo.margin();
|
| @@ -1564,8 +1508,6 @@ LayoutUnit RenderBlockFlow::applyAfterBreak(RenderBox* child, LayoutUnit logical
|
| // So our margin doesn't participate in the next collapsing steps.
|
| marginInfo.clearMargin();
|
|
|
| - if (checkColumnBreaks)
|
| - view()->layoutState()->addForcedColumnBreak(child, logicalOffset);
|
| if (checkRegionBreaks) {
|
| LayoutUnit offsetBreakAdjustment = 0;
|
| if (flowThread->addForcedRegionBreak(offsetFromLogicalTopOfFirstPage() + logicalOffset + marginOffset, child, false, &offsetBreakAdjustment))
|
| @@ -1593,7 +1535,7 @@ void RenderBlockFlow::addOverflowFromFloats()
|
| void RenderBlockFlow::computeOverflow(LayoutUnit oldClientAfterEdge, bool recomputeFloats)
|
| {
|
| RenderBlock::computeOverflow(oldClientAfterEdge, recomputeFloats);
|
| - if (!hasColumns() && (recomputeFloats || isRoot() || expandsToEncloseOverhangingFloats() || hasSelfPaintingLayer()))
|
| + if (recomputeFloats || isRoot() || expandsToEncloseOverhangingFloats() || hasSelfPaintingLayer())
|
| addOverflowFromFloats();
|
| }
|
|
|
| @@ -1907,9 +1849,6 @@ void RenderBlockFlow::repaintOverflow()
|
| else
|
| repaintRect = LayoutRect(m_repaintLogicalTop, repaintLogicalLeft, m_repaintLogicalBottom - m_repaintLogicalTop, repaintLogicalRight - repaintLogicalLeft);
|
|
|
| - // The repaint rect may be split across columns, in which case adjustRectForColumns() will return the union.
|
| - adjustRectForColumns(repaintRect);
|
| -
|
| repaintRect.inflate(maximalOutlineSize(PaintPhaseOutline));
|
|
|
| if (hasOverflowClip()) {
|
| @@ -2397,7 +2336,7 @@ bool RenderBlockFlow::positionNewFloats()
|
|
|
| bool RenderBlockFlow::hasOverhangingFloat(RenderBox* renderer)
|
| {
|
| - if (!m_floatingObjects || hasColumns() || !parent())
|
| + if (!m_floatingObjects || !parent())
|
| return false;
|
|
|
| const FloatingObjectSet& floatingObjectSet = m_floatingObjects->set();
|
| @@ -2446,7 +2385,7 @@ void RenderBlockFlow::addIntrudingFloats(RenderBlockFlow* prev, LayoutUnit logic
|
| LayoutUnit RenderBlockFlow::addOverhangingFloats(RenderBlockFlow* child, bool makeChildPaintOtherFloats)
|
| {
|
| // Prevent floats from being added to the canvas by the root element, e.g., <html>.
|
| - if (child->hasOverflowClip() || !child->containsFloats() || child->isRoot() || child->hasColumns() || child->isWritingModeRoot())
|
| + if (child->hasOverflowClip() || !child->containsFloats() || child->isRoot() || child->isWritingModeRoot())
|
| return 0;
|
|
|
| LayoutUnit childLogicalTop = child->logicalTop();
|
|
|