Index: Source/core/rendering/RenderLayer.cpp |
diff --git a/Source/core/rendering/RenderLayer.cpp b/Source/core/rendering/RenderLayer.cpp |
index 9c306c9dd320254c78ad2ed96a6a0be03fe7c60c..de7234cdb0d11680e679e78f1793bed94151fa49 100644 |
--- a/Source/core/rendering/RenderLayer.cpp |
+++ b/Source/core/rendering/RenderLayer.cpp |
@@ -1491,7 +1491,14 @@ void RenderLayer::collectFragments(LayerFragments& fragments, const RenderLayer* |
// Shift the dirty rect into flow thread coordinates. |
LayoutPoint offsetOfPaginationLayerFromRoot; |
- enclosingPaginationLayer()->convertToLayerCoords(rootLayer, offsetOfPaginationLayerFromRoot); |
+ if (rootLayer != enclosingPaginationLayer() && rootLayer->enclosingPaginationLayer() == enclosingPaginationLayer()) { |
+ // The root layer is inside our pagination layer. |
+ // FIXME: more work needed if there are nested pagination layers. |
+ rootLayer->convertToLayerCoords(enclosingPaginationLayer(), offsetOfPaginationLayerFromRoot); |
+ offsetOfPaginationLayerFromRoot = -offsetOfPaginationLayerFromRoot; |
+ } else { |
+ enclosingPaginationLayer()->convertToLayerCoords(rootLayer, offsetOfPaginationLayerFromRoot); |
+ } |
LayoutRect dirtyRectInFlowThread(dirtyRect); |
dirtyRectInFlowThread.moveBy(-offsetOfPaginationLayerFromRoot); |