Index: Source/core/rendering/RenderTableCell.cpp |
diff --git a/Source/core/rendering/RenderTableCell.cpp b/Source/core/rendering/RenderTableCell.cpp |
index f848a1262a7ea8920efbef22f325f84185b008bb..31746d8549998e1675eefdb86c4ff83346acd6f2 100644 |
--- a/Source/core/rendering/RenderTableCell.cpp |
+++ b/Source/core/rendering/RenderTableCell.cpp |
@@ -315,14 +315,14 @@ |
return offset; |
} |
-LayoutRect RenderTableCell::clippedOverflowRectForPaintInvalidation(const RenderLayerModelObject* paintInvalidationContainer) const |
+LayoutRect RenderTableCell::clippedOverflowRectForPaintInvalidation(const RenderLayerModelObject* paintInvalidationContainer, const PaintInvalidationState* paintInvalidationState) const |
{ |
// If the table grid is dirty, we cannot get reliable information about adjoining cells, |
// so we ignore outside borders. This should not be a problem because it means that |
// the table is going to recalculate the grid, relayout and repaint its current rect, which |
// includes any outside borders of this cell. |
if (!table()->collapseBorders() || table()->needsSectionRecalc()) |
- return RenderBlockFlow::clippedOverflowRectForPaintInvalidation(paintInvalidationContainer); |
+ return RenderBlockFlow::clippedOverflowRectForPaintInvalidation(paintInvalidationContainer, paintInvalidationState); |
bool rtl = !styleForCellFlow()->isLeftToRightDirection(); |
int outlineSize = style()->outlineSize(); |
@@ -357,19 +357,18 @@ |
LayoutPoint location(std::max<LayoutUnit>(left, -visualOverflowRect().x()), std::max<LayoutUnit>(top, -visualOverflowRect().y())); |
LayoutRect r(-location.x(), -location.y(), location.x() + std::max(width() + right, visualOverflowRect().maxX()), location.y() + std::max(height() + bottom, visualOverflowRect().maxY())); |
- mapRectToPaintInvalidationBacking(paintInvalidationContainer, r); |
+ mapRectToPaintInvalidationBacking(paintInvalidationContainer, r, false /* fixed */, paintInvalidationState); |
return r; |
} |
-void RenderTableCell::mapRectToPaintInvalidationBacking(const RenderLayerModelObject* paintInvalidationContainer, LayoutRect& r, bool fixed) const |
+void RenderTableCell::mapRectToPaintInvalidationBacking(const RenderLayerModelObject* paintInvalidationContainer, LayoutRect& r, bool fixed, const PaintInvalidationState* paintInvalidationState) const |
{ |
if (paintInvalidationContainer == this) |
return; |
r.setY(r.y()); |
- RenderView* v = view(); |
- if ((!v || !v->canMapUsingLayoutStateForContainer(paintInvalidationContainer)) && parent()) |
+ if ((!paintInvalidationState || !paintInvalidationState->canMapToContainer(paintInvalidationContainer)) && parent()) |
r.moveBy(-parentBox()->location()); // Rows are in the same coordinate space, so don't add their offset in. |
- RenderBlockFlow::mapRectToPaintInvalidationBacking(paintInvalidationContainer, r, fixed); |
+ RenderBlockFlow::mapRectToPaintInvalidationBacking(paintInvalidationContainer, r, fixed, paintInvalidationState); |
} |
LayoutUnit RenderTableCell::cellBaselinePosition() const |