Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(451)

Unified Diff: third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp

Issue 2882043002: Update our treatment of repeating headers in tables (Closed)
Patch Set: bug 720620 Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 36cdfe6537f2b5c110527b888b857cebd0ddd057..3a49ddd78677c9df903085d077a56100f3d35289 100644
--- a/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
@@ -1130,7 +1130,8 @@ void LayoutBlockFlow::AdjustLinePositionForPagination(RootInlineBox& line_box,
logical_offset += delta;
line_box.SetPaginationStrut(LayoutUnit());
line_box.SetIsFirstAfterPageBreak(false);
- if (!View()->GetLayoutState()->IsPaginated())
+ LayoutState* layout_state = View()->GetLayoutState();
+ if (!layout_state->IsPaginated())
return;
LayoutUnit page_logical_height = PageLogicalHeightForOffset(logical_offset);
if (!page_logical_height)
@@ -1194,14 +1195,22 @@ void LayoutBlockFlow::AdjustLinePositionForPagination(RootInlineBox& line_box,
// up in the next column or page. Setting a strut on the block is also
// important when it comes to satisfying orphan requirements.
if (ShouldSetStrutOnBlock(*this, line_box, logical_offset, line_index,
- page_logical_height))
- strut_to_propagate = logical_offset;
+ page_logical_height)) {
+ DCHECK(!IsTableCell());
+ strut_to_propagate =
+ logical_offset + layout_state->HeightOffsetForTableHeaders();
+ } else if (LayoutUnit pagination_strut =
+ layout_state->HeightOffsetForTableHeaders()) {
+ delta += pagination_strut;
+ line_box.SetPaginationStrut(pagination_strut);
+ }
} else if (line_box == FirstRootBox() && AllowsPaginationStrut()) {
// This is the first line in the block. The block may still start in the
// previous column or page, and if that's the case, attempt to pull it over
// to where this line is, so that we don't split the top border or padding.
- LayoutUnit strut =
- remaining_logical_height + logical_offset - page_logical_height;
+ LayoutUnit strut = remaining_logical_height + logical_offset +
+ layout_state->HeightOffsetForTableHeaders() -
+ page_logical_height;
if (strut > LayoutUnit()) {
// The block starts in a previous column or page. Set a strut on the block
// if there's room for the top border, padding and the line in one column

Powered by Google App Engine
This is Rietveld 408576698