| Index: Source/core/rendering/RenderBlockFlow.cpp
|
| diff --git a/Source/core/rendering/RenderBlockFlow.cpp b/Source/core/rendering/RenderBlockFlow.cpp
|
| index 8370a7bc4aa3b91467243ff59d1a790b6f19c449..f40a75d8a94a8c165ead0df4ba92a78b4116edc9 100644
|
| --- a/Source/core/rendering/RenderBlockFlow.cpp
|
| +++ b/Source/core/rendering/RenderBlockFlow.cpp
|
| @@ -187,6 +187,38 @@ void RenderBlockFlow::willBeDestroyed()
|
| RenderBlock::willBeDestroyed();
|
| }
|
|
|
| +void RenderBlockFlow::checkForPaginationLogicalHeightChange(LayoutUnit& pageLogicalHeight, bool& pageLogicalHeightChanged, bool& hasSpecifiedPageLogicalHeight)
|
| +{
|
| + ColumnInfo* colInfo = columnInfo();
|
| + if (hasColumns()) {
|
| + if (!pageLogicalHeight) {
|
| + LayoutUnit oldLogicalHeight = logicalHeight();
|
| + setLogicalHeight(0);
|
| + // We need to go ahead and set our explicit page height if one exists, so that we can
|
| + // avoid doing two layout passes.
|
| + updateLogicalHeight();
|
| + LayoutUnit columnHeight = contentLogicalHeight();
|
| + if (columnHeight > 0) {
|
| + pageLogicalHeight = columnHeight;
|
| + hasSpecifiedPageLogicalHeight = true;
|
| + }
|
| + setLogicalHeight(oldLogicalHeight);
|
| + }
|
| + if (colInfo->columnHeight() != pageLogicalHeight && everHadLayout()) {
|
| + colInfo->setColumnHeight(pageLogicalHeight);
|
| + pageLogicalHeightChanged = true;
|
| + }
|
| +
|
| + if (!hasSpecifiedPageLogicalHeight && !pageLogicalHeight)
|
| + colInfo->clearForcedBreaks();
|
| +
|
| + colInfo->setPaginationUnit(paginationUnit());
|
| + } else if (isRenderFlowThread()) {
|
| + pageLogicalHeight = 1; // This is just a hack to always make sure we have a page logical height.
|
| + pageLogicalHeightChanged = toRenderFlowThread(this)->pageLogicalSizeChanged();
|
| + }
|
| +}
|
| +
|
| bool RenderBlockFlow::relayoutForPagination(bool hasSpecifiedPageLogicalHeight, LayoutUnit pageLogicalHeight, LayoutStateMaintainer& statePusher)
|
| {
|
| if (!hasColumns())
|
|
|