| Index: Source/core/frame/FrameView.cpp
|
| diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp
|
| index 69e42ef47414032d9ece4f360069cc4aa9996db5..0a043b360750f4097852dc8cbf5a87af31cbe8e0 100644
|
| --- a/Source/core/frame/FrameView.cpp
|
| +++ b/Source/core/frame/FrameView.cpp
|
| @@ -1419,8 +1419,8 @@ bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect
|
|
|
| IntRect updateRect = pixelSnappedIntRect(layer->repainter().repaintRectIncludingNonCompositingDescendants());
|
|
|
| - RenderLayer* enclosingCompositingLayer = layer->enclosingCompositingLayer(ExcludeSelf);
|
| - if (enclosingCompositingLayer && !enclosingCompositingLayer->renderer()->isRenderView()) {
|
| + const RenderLayerModelObject* repaintContainer = layer->renderer()->containerForRepaint();
|
| + if (repaintContainer && !repaintContainer->isRenderView()) {
|
| // If the fixed-position layer is contained by a composited layer that is not its containing block,
|
| // then we have to invalidate that enclosing layer, not the RenderView.
|
| // FIXME: Why do we need to issue this invalidation? Won't the fixed position element just scroll
|
| @@ -1429,7 +1429,7 @@ bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect
|
| IntRect previousRect = updateRect;
|
| previousRect.move(scrollDelta);
|
| updateRect.unite(previousRect);
|
| - enclosingCompositingLayer->repainter().setBackingNeedsRepaintInRect(updateRect);
|
| + layer->renderer()->repaintUsingContainer(repaintContainer, updateRect, InvalidationScroll);
|
| } else {
|
| // Coalesce the paint invalidations that will be issued to the renderView.
|
| updateRect = contentsToRootView(updateRect);
|
|
|