Index: third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
index e9d007419042c786cccfc583a3b5e339e3730c45..b079f6c5af17d95caf210de248f17991fe705795 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
@@ -41,6 +41,7 @@ |
#include "core/layout/LayoutMultiColumnFlowThread.h" |
#include "core/layout/LayoutMultiColumnSpannerPlaceholder.h" |
#include "core/layout/LayoutPagedFlowThread.h" |
+#include "core/layout/LayoutTableRow.h" |
mstensho (USE GERRIT)
2016/02/26 13:29:59
No need for this, I hope.
|
#include "core/layout/LayoutText.h" |
#include "core/layout/LayoutView.h" |
#include "core/layout/TextAutosizer.h" |
@@ -722,8 +723,15 @@ LayoutUnit LayoutBlockFlow::adjustBlockChildForPagination(LayoutUnit logicalTop, |
static bool shouldSetStrutOnBlock(const LayoutBlockFlow& block, const RootInlineBox& lineBox, LayoutUnit lineLogicalOffset, int lineIndex, LayoutUnit pageLogicalHeight) |
{ |
+ LayoutUnit lineHeight = lineBox.lineBottomWithLeading() - lineBox.lineTopWithLeading(); |
mstensho (USE GERRIT)
2016/02/26 13:29:59
Maybe you meant to revert these changes, now that
|
+ LayoutUnit totalLogicalHeight = lineHeight + lineLogicalOffset.clampNegativeToZero(); |
+ |
+ |
bool wantsStrutOnBlock = false; |
- if (!block.style()->hasAutoOrphans() && block.style()->orphans() >= lineIndex) { |
+ // We avoid letting table cells straddle a page boundary unless the cell is taller than the page. |
+ if (block.isTableCell() && totalLogicalHeight <= pageLogicalHeight) { |
+ wantsStrutOnBlock = true; |
+ } else if (!block.style()->hasAutoOrphans() && block.style()->orphans() >= lineIndex) { |
// Not enough orphans here. Push the entire block to the next column / page as an |
// attempt to better satisfy the orphans requirement. |
wantsStrutOnBlock = true; |
@@ -734,8 +742,6 @@ static bool shouldSetStrutOnBlock(const LayoutBlockFlow& block, const RootInline |
// means that the line was pushed downwards by preceding floats that didn't fit beside the |
// line, and we don't want to move all that, since it has already been established that it |
// fits nicely where it is. |
- LayoutUnit lineHeight = lineBox.lineBottomWithLeading() - lineBox.lineTopWithLeading(); |
- LayoutUnit totalLogicalHeight = lineHeight + lineLogicalOffset.clampNegativeToZero(); |
// It's rather pointless to break before the block if the current line isn't going to |
// fit in the same column or page, so check that as well. |
if (totalLogicalHeight <= pageLogicalHeight) |
@@ -2678,6 +2684,9 @@ bool LayoutBlockFlow::allowsPaginationStrut() const |
// previous one. But currently we have no mechanism in place to handle this. |
return false; |
} |
+ if (isTableCell()) |
+ return true; |
+ |
LayoutBlock* containingBlock = this->containingBlock(); |
return containingBlock && containingBlock->isLayoutBlockFlow(); |
} |