Index: third_party/WebKit/Source/core/paint/TableSectionPainter.cpp |
diff --git a/third_party/WebKit/Source/core/paint/TableSectionPainter.cpp b/third_party/WebKit/Source/core/paint/TableSectionPainter.cpp |
index f1f68fd79263c9a999934a5b0a683a615307427e..bf7688327f5b8d58ad071fc95a9e3276fd1c9313 100644 |
--- a/third_party/WebKit/Source/core/paint/TableSectionPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/TableSectionPainter.cpp |
@@ -33,8 +33,10 @@ void TableSectionPainter::PaintRepeatingHeaderGroup( |
LayoutUnit header_group_offset = table->BlockOffsetToFirstRepeatableHeader(); |
// The header may have a pagination strut before it so we need to account for |
// that when establishing its position. |
+ LayoutUnit strut_on_first_row; |
if (LayoutTableRow* row = layout_table_section_.FirstRow()) |
- header_group_offset += row->PaginationStrut(); |
+ strut_on_first_row = row->PaginationStrut(); |
+ header_group_offset += strut_on_first_row; |
LayoutUnit offset_to_next_page = |
page_height - IntMod(header_group_offset, page_height); |
// Move paginationOffset to the top of the next page. |
@@ -59,11 +61,16 @@ void TableSectionPainter::PaintRepeatingHeaderGroup( |
paint_offset.Y() + total_height_of_rows); |
while (pagination_offset.Y() < bottom_bound) { |
+ LayoutPoint nested_offset = pagination_offset; |
+ LayoutUnit height_of_previous_headers = |
+ table->RowOffsetFromRepeatingHeader() - |
+ layout_table_section_.LogicalHeight() + strut_on_first_row; |
+ nested_offset.Move(LayoutUnit(), height_of_previous_headers); |
if (item_to_paint == kPaintCollapsedBorders) { |
- PaintCollapsedSectionBorders(paint_info, pagination_offset, |
+ PaintCollapsedSectionBorders(paint_info, nested_offset, |
current_border_value); |
} else { |
- PaintSection(paint_info, pagination_offset); |
+ PaintSection(paint_info, nested_offset); |
} |
pagination_offset.Move(0, page_height.ToInt()); |
} |