| Index: third_party/WebKit/Source/core/layout/LayoutTableSection.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp b/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp
|
| index 7fffc1397a6be6c64a33997803c4158ccad603e6..f8802d139c13fd2d530f187aec0b6f0dba3bc916 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutTableSection.cpp
|
| @@ -1175,7 +1175,19 @@ void LayoutTableSection::layoutRows() {
|
| relayoutCellIfFlexed(*cell, r, rHeight);
|
|
|
| SubtreeLayoutScope layouter(*cell);
|
| - cell->computeIntrinsicPadding(rHeight, layouter);
|
| + LayoutUnit rowLogicalTop(m_rowPos[rowIndex]);
|
| + EVerticalAlign cellVerticalAlign;
|
| + // If the cell crosses a fragmentainer boundary, just align it at the
|
| + // top. That's how it was laid out initially, before we knew the final
|
| + // row height, and re-aligning it now could result in the cell being
|
| + // fragmented differently, which could change its height and thus violate
|
| + // the requested alignment. Give up instead of risking circular
|
| + // dependencies and unstable layout.
|
| + if (crossesPageBoundary(rowLogicalTop, LayoutUnit(rHeight)))
|
| + cellVerticalAlign = VerticalAlignTop;
|
| + else
|
| + cellVerticalAlign = cell->style()->verticalAlign();
|
| + cell->computeIntrinsicPadding(rHeight, cellVerticalAlign, layouter);
|
|
|
| LayoutRect oldCellRect = cell->frameRect();
|
|
|
|
|