Chromium Code Reviews| 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 494e8708ce9a3bf916d99d34d9a85062af8ee3ab..4688374ba5f7e2acb97b218fbe4f6b42fb753fdb 100644 |
| --- a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
| +++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp |
| @@ -1139,7 +1139,11 @@ void LayoutBlockFlow::AdjustLinePositionForPagination(RootInlineBox& line_box, |
| LayoutUnit remaining_logical_height = PageRemainingLogicalHeightForOffset( |
| logical_offset, kAssociateWithLatterPage); |
| int line_index = LineCount(&line_box); |
| - if (remaining_logical_height < line_height || |
| + // We need to detect if we overlap a repeating footer and if so take the |
| + // full remaining logical height as our strut to the next page. |
| + LayoutUnit remaining_logical_height_including_footer = |
| + remaining_logical_height - layout_state->HeightOffsetForTableFooters(); |
| + if (remaining_logical_height_including_footer < line_height || |
| (ShouldBreakAtLineToAvoidWidow() && |
| LineBreakToAvoidWidow() == line_index)) { |
| LayoutUnit pagination_strut = CalculatePaginationStrutToFitContent( |
| @@ -1246,7 +1250,10 @@ LayoutUnit LayoutBlockFlow::AdjustForUnsplittableChild( |
| return logical_offset; |
| LayoutUnit remaining_logical_height = PageRemainingLogicalHeightForOffset( |
| logical_offset, kAssociateWithLatterPage); |
| - if (remaining_logical_height >= child_logical_height) |
| + LayoutUnit remaining_logical_height_including_footer = |
| + remaining_logical_height - |
| + View()->GetLayoutState()->HeightOffsetForTableFooters(); |
| + if (remaining_logical_height_including_footer >= child_logical_height) |
|
mstensho (USE GERRIT)
2017/07/17 10:38:08
Why can't PageRemainingLogicalHeightForOffset() do
rhogan
2017/07/24 18:56:06
Because, as well as deciding whether the line or b
mstensho (USE GERRIT)
2017/07/25 08:59:32
Ah, true.
PageRemainingLogicalHeightForOffset() s
|
| return logical_offset; // It fits fine where it is. No need to break. |
| LayoutUnit pagination_strut = CalculatePaginationStrutToFitContent( |
| logical_offset, remaining_logical_height, child_logical_height); |