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() |