Chromium Code Reviews| Index: Source/core/rendering/RenderTableSection.cpp |
| diff --git a/Source/core/rendering/RenderTableSection.cpp b/Source/core/rendering/RenderTableSection.cpp |
| index 252991e60cf6acc34738d8b7d07fb9f1342bc761..d78ea3b8b414dc17856c690c500a260f0523a73b 100644 |
| --- a/Source/core/rendering/RenderTableSection.cpp |
| +++ b/Source/core/rendering/RenderTableSection.cpp |
| @@ -860,6 +860,8 @@ void RenderTableSection::layoutRows() |
| ASSERT(!needsLayout()); |
| + // FIXME: Changing the height without a layout can change the overflow so it seems wrong. |
| + |
| unsigned totalRows = m_grid.size(); |
| // Set the width of our section now. The rows will also be this width. |
| @@ -880,6 +882,7 @@ void RenderTableSection::layoutRows() |
| rowRenderer->setLogicalWidth(logicalWidth()); |
| rowRenderer->setLogicalHeight(m_rowPos[r + 1] - m_rowPos[r] - vspacing); |
| rowRenderer->updateLayerTransform(); |
| + rowRenderer->addVisualEffectOverflow(); |
|
leviw_travelin_and_unemployed
2014/03/11 22:51:10
It seems odd that we didn't call this at all befor
Julien - ping for review
2014/03/12 03:18:58
Yeah, that wouldn't surprise me if some visual eff
|
| } |
| int rowHeightIncreaseForPagination = 0; |
| @@ -966,9 +969,11 @@ void RenderTableSection::layoutRows() |
| // FIXME: Pagination might have made us change size. For now just shrink or grow the cell to fit without doing a relayout. |
| // We'll also do a basic increase of the row height to accommodate the cell if it's bigger, but this isn't quite right |
| // either. It's at least stable though and won't result in an infinite # of relayouts that may never stabilize. |
| - if (cell->logicalHeight() > rHeight) |
| + LayoutUnit oldLogicalHeight = rHeight; |
| + if (oldLogicalHeight > rHeight) |
| rowHeightIncreaseForPagination = max<int>(rowHeightIncreaseForPagination, cell->logicalHeight() - rHeight); |
| cell->setLogicalHeight(rHeight); |
| + cell->computeOverflow(oldLogicalHeight, false); |
| } |
| LayoutSize childOffset(cell->location() - oldCellRect.location()); |
| @@ -988,8 +993,11 @@ void RenderTableSection::layoutRows() |
| m_rowPos[rowIndex] += rowHeightIncreaseForPagination; |
| for (unsigned c = 0; c < nEffCols; ++c) { |
| Vector<RenderTableCell*, 1>& cells = cellAt(r, c).cells; |
| - for (size_t i = 0; i < cells.size(); ++i) |
| - cells[i]->setLogicalHeight(cells[i]->logicalHeight() + rowHeightIncreaseForPagination); |
| + for (size_t i = 0; i < cells.size(); ++i) { |
| + LayoutUnit oldLogicalHeight = cells[i]->logicalHeight(); |
| + cells[i]->setLogicalHeight(oldLogicalHeight + rowHeightIncreaseForPagination); |
| + cells[i]->computeOverflow(oldLogicalHeight, false); |
| + } |
| } |
| } |
| } |
| @@ -1360,11 +1368,8 @@ CellSpan RenderTableSection::spannedColumns(const LayoutRect& flippedRect) const |
| void RenderTableSection::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOffset) |
| { |
| - PaintPhase paintPhase = paintInfo.phase; |
| - |
| LayoutRect localRepaintRect = paintInfo.rect; |
| localRepaintRect.moveBy(-paintOffset); |
| - localRepaintRect.inflate(maximalOutlineSize(paintPhase)); |
| LayoutRect tableAlignedRect = logicalRectForWritingModeAndDirection(localRepaintRect); |