| Index: Source/core/page/FrameView.cpp
|
| diff --git a/Source/core/page/FrameView.cpp b/Source/core/page/FrameView.cpp
|
| index 343bbb47f3cb11f6d67582be68e879639891c76f..7a898dfcce0d99adab4a31de5b2092eab53556c1 100644
|
| --- a/Source/core/page/FrameView.cpp
|
| +++ b/Source/core/page/FrameView.cpp
|
| @@ -1354,13 +1354,16 @@ bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect
|
| if (!renderer->style()->hasViewportConstrainedPosition())
|
| continue;
|
|
|
| - if (renderer->isComposited())
|
| - continue;
|
| -
|
| // Fixed items should always have layers.
|
| ASSERT(renderer->hasLayer());
|
| RenderLayer* layer = toRenderBoxModelObject(renderer)->layer();
|
|
|
| + // Composited layers may still actually paint into their ancestor.
|
| + // If that happens, the viewport constrained object needs to be
|
| + // repainted on scroll.
|
| + if (layer->isComposited() && !layer->backing()->paintsIntoCompositedAncestor())
|
| + continue;
|
| +
|
| if (layer->viewportConstrainedNotCompositedReason() == RenderLayer::NotCompositedForBoundsOutOfView
|
| || layer->viewportConstrainedNotCompositedReason() == RenderLayer::NotCompositedForNoVisibleContent) {
|
| // Don't invalidate for invisible fixed layers.
|
|
|