| Index: Source/core/rendering/RenderBlockFlow.cpp
|
| diff --git a/Source/core/rendering/RenderBlockFlow.cpp b/Source/core/rendering/RenderBlockFlow.cpp
|
| index c90e924371983ad626d39bdc3eca9ec124489dbd..340583e4d815c6e6f1cc4290cc021f102b2621ae 100644
|
| --- a/Source/core/rendering/RenderBlockFlow.cpp
|
| +++ b/Source/core/rendering/RenderBlockFlow.cpp
|
| @@ -38,8 +38,6 @@
|
| #include "core/rendering/LayoutRectRecorder.h"
|
| #include "core/rendering/LayoutRepainter.h"
|
| #include "core/rendering/RenderLayer.h"
|
| -#include "core/rendering/RenderNamedFlowFragment.h"
|
| -#include "core/rendering/RenderNamedFlowThread.h"
|
| #include "core/rendering/RenderText.h"
|
| #include "core/rendering/RenderView.h"
|
| #include "core/rendering/line/LineWidth.h"
|
| @@ -145,7 +143,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->hasColumns())
|
| return true;
|
| if (curr->isFloatingOrOutOfFlowPositioned())
|
| return false;
|
| @@ -181,9 +179,6 @@ void RenderBlockFlow::willBeDestroyed()
|
| if (lineGridBox())
|
| lineGridBox()->destroy();
|
|
|
| - if (renderNamedFlowFragment())
|
| - setRenderNamedFlowFragment(0);
|
| -
|
| RenderBlock::willBeDestroyed();
|
| }
|
|
|
| @@ -278,15 +273,6 @@ inline void RenderBlockFlow::layoutBlockFlow(bool relayoutChildren, LayoutUnit p
|
| RenderView* renderView = view();
|
| LayoutStateMaintainer statePusher(renderView, this, locationOffset(), hasColumns() || hasTransform() || hasReflection() || style()->isFlippedBlocksWritingMode(), pageLogicalHeight, pageLogicalHeightChanged, columnInfo());
|
|
|
| - // Regions changing widths can force us to relayout our children.
|
| - RenderFlowThread* flowThread = flowThreadContainingBlock();
|
| - if (logicalWidthChangedInRegions(flowThread))
|
| - relayoutChildren = true;
|
| - if (updateRegionsAndShapesLogicalSize(flowThread))
|
| - relayoutChildren = true;
|
| - if (!relayoutChildren && isRenderNamedFlowFragmentContainer())
|
| - relayoutChildren = true;
|
| -
|
| // We use four values, maxTopPos, maxTopNeg, maxBottomPos, and maxBottomNeg, to track
|
| // our current maximal positive and negative margins. These values are used when we
|
| // are collapsed with adjacent blocks, so for example, if you have block A and B
|
| @@ -347,11 +333,6 @@ inline void RenderBlockFlow::layoutBlockFlow(bool relayoutChildren, LayoutUnit p
|
| LayoutUnit oldHeight = logicalHeight();
|
| LayoutUnit oldClientAfterEdge = clientLogicalBottom();
|
|
|
| - // Before updating the final size of the flow thread make sure a forced break is applied after the content.
|
| - // This ensures the size information is correctly computed for the last auto-height region receiving content.
|
| - if (isRenderFlowThread())
|
| - toRenderFlowThread(this)->applyBreakAfterContent(oldClientAfterEdge);
|
| -
|
| updateLogicalHeight();
|
| LayoutUnit newHeight = logicalHeight();
|
| if (oldHeight != newHeight) {
|
| @@ -373,8 +354,6 @@ inline void RenderBlockFlow::layoutBlockFlow(bool relayoutChildren, LayoutUnit p
|
|
|
| layoutPositionedObjects(relayoutChildren || isRoot());
|
|
|
| - updateRegionsAndShapesAfterChildLayout(flowThread, heightChanged);
|
| -
|
| // Add overflow from children (unless we're multi-column, since in that case all our child overflow is clipped anyway).
|
| computeOverflow(oldClientAfterEdge);
|
|
|
| @@ -864,7 +843,7 @@ MarginInfo::MarginInfo(RenderBlockFlow* blockFlow, LayoutUnit beforeBorderPaddin
|
| ASSERT(blockFlow->isRenderView() || blockFlow->parent());
|
| m_canCollapseWithChildren = !blockFlow->isRenderView() && !blockFlow->isRoot() && !blockFlow->isOutOfFlowPositioned()
|
| && !blockFlow->isFloating() && !blockFlow->isTableCell() && !blockFlow->hasOverflowClip() && !blockFlow->isInlineBlockOrInlineTable()
|
| - && !blockFlow->isRenderFlowThread() && !blockFlow->isWritingModeRoot() && !blockFlow->parent()->isFlexibleBox()
|
| + && !blockFlow->isWritingModeRoot() && !blockFlow->parent()->isFlexibleBox()
|
| && blockStyle->hasAutoColumnCount() && blockStyle->hasAutoColumnWidth() && !blockStyle->columnSpan();
|
|
|
| m_canCollapseMarginBeforeWithChildren = m_canCollapseWithChildren && !beforeBorderPadding && blockStyle->marginBeforeCollapse() != MSEPARATE;
|
| @@ -1134,19 +1113,16 @@ void RenderBlockFlow::adjustPositionedBlock(RenderBox* child, const MarginInfo&
|
| }
|
| }
|
|
|
| -LayoutUnit RenderBlockFlow::computeStartPositionDeltaForChildAvoidingFloats(const RenderBox* child, LayoutUnit childMarginStart, RenderRegion* region)
|
| +LayoutUnit RenderBlockFlow::computeStartPositionDeltaForChildAvoidingFloats(const RenderBox* child, LayoutUnit childMarginStart)
|
| {
|
| - LayoutUnit startPosition = startOffsetForContent(region);
|
| + LayoutUnit startPosition = startOffsetForContent();
|
|
|
| // Add in our start margin.
|
| LayoutUnit oldPosition = startPosition + childMarginStart;
|
| LayoutUnit newPosition = oldPosition;
|
|
|
| LayoutUnit blockOffset = logicalTopForChild(child);
|
| - if (region)
|
| - blockOffset = max(blockOffset, blockOffset + (region->logicalTopForFlowThreadContent() - offsetFromLogicalTopOfFirstPage()));
|
| -
|
| - LayoutUnit startOff = startOffsetForLineInRegion(blockOffset, false, region, logicalHeightForChild(child));
|
| + LayoutUnit startOff = startOffsetForLine(blockOffset, false, logicalHeightForChild(child));
|
|
|
| if (style()->textAlign() != WEBKIT_CENTER && !child->style()->marginStartUsing(style()).isAuto()) {
|
| if (childMarginStart < 0)
|
| @@ -1529,18 +1505,10 @@ LayoutUnit RenderBlockFlow::applyBeforeBreak(RenderBox* child, LayoutUnit logica
|
| // 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.
|
| - RenderFlowThread* flowThread = flowThreadContainingBlock();
|
| - bool checkRegionBreaks = flowThread && flowThread->isRenderNamedFlowThread();
|
| - bool checkBeforeAlways = (checkColumnBreaks && child->style()->columnBreakBefore() == PBALWAYS) || (checkPageBreaks && child->style()->pageBreakBefore() == PBALWAYS)
|
| - || (checkRegionBreaks && child->style()->regionBreakBefore() == PBALWAYS);
|
| + bool checkBeforeAlways = (checkColumnBreaks && child->style()->columnBreakBefore() == PBALWAYS) || (checkPageBreaks && child->style()->pageBreakBefore() == 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))
|
| - return logicalOffset + offsetBreakAdjustment;
|
| - }
|
| return nextPageLogicalTop(logicalOffset, IncludePageBoundary);
|
| }
|
| return logicalOffset;
|
| @@ -1551,23 +1519,13 @@ LayoutUnit RenderBlockFlow::applyAfterBreak(RenderBox* child, LayoutUnit logical
|
| // 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.
|
| - RenderFlowThread* flowThread = flowThreadContainingBlock();
|
| - bool checkRegionBreaks = flowThread && flowThread->isRenderNamedFlowThread();
|
| - bool checkAfterAlways = (checkColumnBreaks && child->style()->columnBreakAfter() == PBALWAYS) || (checkPageBreaks && child->style()->pageBreakAfter() == PBALWAYS)
|
| - || (checkRegionBreaks && child->style()->regionBreakAfter() == PBALWAYS);
|
| + bool checkAfterAlways = (checkColumnBreaks && child->style()->columnBreakAfter() == PBALWAYS) || (checkPageBreaks && child->style()->pageBreakAfter() == PBALWAYS);
|
| if (checkAfterAlways && inNormalFlow(child) && hasNextPage(logicalOffset, IncludePageBoundary)) {
|
| - LayoutUnit marginOffset = marginInfo.canCollapseWithMarginBefore() ? LayoutUnit() : marginInfo.margin();
|
| -
|
| // 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))
|
| - return logicalOffset + marginOffset + offsetBreakAdjustment;
|
| - }
|
| return nextPageLogicalTop(logicalOffset, IncludePageBoundary);
|
| }
|
| return logicalOffset;
|
| @@ -1695,11 +1653,10 @@ LayoutUnit RenderBlockFlow::getClearDelta(RenderBox* child, LayoutUnit logicalTo
|
| LayoutUnit newLogicalTop = logicalTop;
|
| while (true) {
|
| LayoutUnit availableLogicalWidthAtNewLogicalTopOffset = availableLogicalWidthForLine(newLogicalTop, false, logicalHeightForChild(child));
|
| - if (availableLogicalWidthAtNewLogicalTopOffset == availableLogicalWidthForContent(newLogicalTop))
|
| + if (availableLogicalWidthAtNewLogicalTopOffset == availableLogicalWidthForContent())
|
| return newLogicalTop - logicalTop;
|
|
|
| - RenderRegion* region = regionAtBlockOffset(logicalTopForChild(child));
|
| - LayoutRect borderBox = child->borderBoxRectInRegion(region, DoNotCacheRenderBoxRegionInfo);
|
| + LayoutRect borderBox = child->borderBoxRect();
|
| LayoutUnit childLogicalWidthAtOldLogicalTopOffset = isHorizontalWritingMode() ? borderBox.width() : borderBox.height();
|
|
|
| // FIXME: None of this is right for perpendicular writing-mode children.
|
| @@ -1710,8 +1667,7 @@ LayoutUnit RenderBlockFlow::getClearDelta(RenderBox* child, LayoutUnit logicalTo
|
|
|
| child->setLogicalTop(newLogicalTop);
|
| child->updateLogicalWidth();
|
| - region = regionAtBlockOffset(logicalTopForChild(child));
|
| - borderBox = child->borderBoxRectInRegion(region, DoNotCacheRenderBoxRegionInfo);
|
| + borderBox = child->borderBoxRect();
|
| LayoutUnit childLogicalWidthAtNewLogicalTopOffset = isHorizontalWritingMode() ? borderBox.width() : borderBox.height();
|
|
|
| child->setLogicalTop(childOldLogicalTop);
|
| @@ -1787,9 +1743,6 @@ void RenderBlockFlow::styleDidChange(StyleDifference diff, const RenderStyle* ol
|
| parentBlockFlow->markAllDescendantsWithFloatsForLayout();
|
| parentBlockFlow->markSiblingsWithFloatsForLayout();
|
| }
|
| -
|
| - if (renderNamedFlowFragment())
|
| - renderNamedFlowFragment()->setStyleForNamedFlowFragment(style());
|
| }
|
|
|
| void RenderBlockFlow::updateStaticInlinePositionForChild(RenderBox* child, LayoutUnit logicalTop)
|
| @@ -1797,15 +1750,11 @@ void RenderBlockFlow::updateStaticInlinePositionForChild(RenderBox* child, Layou
|
| if (child->style()->isOriginalDisplayInlineType())
|
| setStaticInlinePositionForChild(child, logicalTop, startAlignedOffsetForLine(logicalTop, false));
|
| else
|
| - setStaticInlinePositionForChild(child, logicalTop, startOffsetForContent(logicalTop));
|
| + setStaticInlinePositionForChild(child, logicalTop, startOffsetForContent());
|
| }
|
|
|
| void RenderBlockFlow::setStaticInlinePositionForChild(RenderBox* child, LayoutUnit blockOffset, LayoutUnit inlinePosition)
|
| {
|
| - if (flowThreadContainingBlock()) {
|
| - // Shift the inline position to exclude the region offset.
|
| - inlinePosition += startOffsetForContent() - startOffsetForContent(blockOffset);
|
| - }
|
| child->layer()->setStaticInlinePosition(inlinePosition);
|
| }
|
|
|
| @@ -2117,7 +2066,7 @@ LayoutUnit RenderBlockFlow::adjustLogicalRightOffsetForLine(LayoutUnit offsetFro
|
| LayoutPoint RenderBlockFlow::computeLogicalLocationForFloat(const FloatingObject* floatingObject, LayoutUnit logicalTopOffset) const
|
| {
|
| RenderBox* childBox = floatingObject->renderer();
|
| - LayoutUnit logicalLeftOffset = logicalLeftOffsetForContent(logicalTopOffset); // Constant part of left offset.
|
| + LayoutUnit logicalLeftOffset = logicalLeftOffsetForContent(); // Constant part of left offset.
|
| LayoutUnit logicalRightOffset; // Constant part of right offset.
|
| // FIXME Bug 102948: This only works for shape outside directly set on this block.
|
| ShapeInsideInfo* shapeInsideInfo = this->layoutShapeInsideInfo();
|
| @@ -2140,15 +2089,13 @@ LayoutPoint RenderBlockFlow::computeLogicalLocationForFloat(const FloatingObject
|
| logicalLeftOffset += segments[0].logicalLeft;
|
| }
|
| } else {
|
| - logicalRightOffset = logicalRightOffsetForContent(logicalTopOffset);
|
| + logicalRightOffset = logicalRightOffsetForContent();
|
| }
|
|
|
| LayoutUnit floatLogicalWidth = min(logicalWidthForFloat(floatingObject), logicalRightOffset - logicalLeftOffset); // The width we look for.
|
|
|
| LayoutUnit floatLogicalLeft;
|
|
|
| - bool insideFlowThread = flowThreadContainingBlock();
|
| -
|
| if (childBox->style()->floating() == LeftFloat) {
|
| LayoutUnit heightRemainingLeft = 1;
|
| LayoutUnit heightRemainingRight = 1;
|
| @@ -2156,12 +2103,6 @@ LayoutPoint RenderBlockFlow::computeLogicalLocationForFloat(const FloatingObject
|
| while (logicalRightOffsetForPositioningFloat(logicalTopOffset, logicalRightOffset, false, &heightRemainingRight) - floatLogicalLeft < floatLogicalWidth) {
|
| logicalTopOffset += min(heightRemainingLeft, heightRemainingRight);
|
| floatLogicalLeft = logicalLeftOffsetForPositioningFloat(logicalTopOffset, logicalLeftOffset, false, &heightRemainingLeft);
|
| - if (insideFlowThread) {
|
| - // Have to re-evaluate all of our offsets, since they may have changed.
|
| - logicalRightOffset = logicalRightOffsetForContent(logicalTopOffset); // Constant part of right offset.
|
| - logicalLeftOffset = logicalLeftOffsetForContent(logicalTopOffset); // Constant part of left offset.
|
| - floatLogicalWidth = min(logicalWidthForFloat(floatingObject), logicalRightOffset - logicalLeftOffset);
|
| - }
|
| }
|
| floatLogicalLeft = max(logicalLeftOffset - borderAndPaddingLogicalLeft(), floatLogicalLeft);
|
| } else {
|
| @@ -2171,12 +2112,6 @@ LayoutPoint RenderBlockFlow::computeLogicalLocationForFloat(const FloatingObject
|
| while (floatLogicalLeft - logicalLeftOffsetForPositioningFloat(logicalTopOffset, logicalLeftOffset, false, &heightRemainingLeft) < floatLogicalWidth) {
|
| logicalTopOffset += min(heightRemainingLeft, heightRemainingRight);
|
| floatLogicalLeft = logicalRightOffsetForPositioningFloat(logicalTopOffset, logicalRightOffset, false, &heightRemainingRight);
|
| - if (insideFlowThread) {
|
| - // Have to re-evaluate all of our offsets, since they may have changed.
|
| - logicalRightOffset = logicalRightOffsetForContent(logicalTopOffset); // Constant part of right offset.
|
| - logicalLeftOffset = logicalLeftOffsetForContent(logicalTopOffset); // Constant part of left offset.
|
| - floatLogicalWidth = min(logicalWidthForFloat(floatingObject), logicalRightOffset - logicalLeftOffset);
|
| - }
|
| }
|
| // Use the original width of the float here, since the local variable
|
| // |floatLogicalWidth| was capped to the available line width. See
|
| @@ -2770,53 +2705,9 @@ RootInlineBox* RenderBlockFlow::createRootInlineBox()
|
| return new RootInlineBox(this);
|
| }
|
|
|
| -void RenderBlockFlow::createRenderNamedFlowFragmentIfNeeded()
|
| -{
|
| - if (!RuntimeEnabledFeatures::cssRegionsEnabled()
|
| - || renderNamedFlowFragment()
|
| - || isRenderNamedFlowFragment())
|
| - return;
|
| -
|
| - RenderStyle* styleToUse = style();
|
| - if (styleToUse->isDisplayRegionType() && styleToUse->hasFlowFrom() && document().renderView()) {
|
| - RenderNamedFlowFragment* flowFragment = RenderNamedFlowFragment::createAnonymous(&document());
|
| - flowFragment->setStyleForNamedFlowFragment(styleToUse);
|
| - setRenderNamedFlowFragment(flowFragment);
|
| - addChild(flowFragment);
|
| - }
|
| -}
|
| -
|
| -void RenderBlockFlow::insertedIntoTree()
|
| -{
|
| - RenderBlock::insertedIntoTree();
|
| -
|
| - createRenderNamedFlowFragmentIfNeeded();
|
| -}
|
| -
|
| -bool RenderBlockFlow::canHaveChildren() const
|
| -{
|
| - return !renderNamedFlowFragment() ? RenderBlock::canHaveChildren() : renderNamedFlowFragment()->canHaveChildren();
|
| -}
|
| -
|
| -bool RenderBlockFlow::canHaveGeneratedChildren() const
|
| -{
|
| - return !renderNamedFlowFragment() ? RenderBlock::canHaveGeneratedChildren() : renderNamedFlowFragment()->canHaveGeneratedChildren();
|
| -}
|
| -
|
| void RenderBlockFlow::updateLogicalHeight()
|
| {
|
| RenderBlock::updateLogicalHeight();
|
| -
|
| - if (renderNamedFlowFragment())
|
| - renderNamedFlowFragment()->setLogicalHeight(max<LayoutUnit>(0, logicalHeight() - borderAndPaddingLogicalHeight()));
|
| -}
|
| -
|
| -void RenderBlockFlow::setRenderNamedFlowFragment(RenderNamedFlowFragment* flowFragment)
|
| -{
|
| - RenderBlockFlow::RenderBlockFlowRareData& rareData = ensureRareData();
|
| - if (rareData.m_renderNamedFlowFragment)
|
| - rareData.m_renderNamedFlowFragment->destroy();
|
| - rareData.m_renderNamedFlowFragment = flowFragment;
|
| }
|
|
|
| RenderBlockFlow::RenderBlockFlowRareData& RenderBlockFlow::ensureRareData()
|
|
|