Index: Source/core/rendering/RenderView.cpp |
diff --git a/Source/core/rendering/RenderView.cpp b/Source/core/rendering/RenderView.cpp |
index 6c163ac70a17cf4bd91e3b6017e584283a647576..e03ec3d79228cc71ba969447be9e8a7df78cbb1b 100644 |
--- a/Source/core/rendering/RenderView.cpp |
+++ b/Source/core/rendering/RenderView.cpp |
@@ -201,8 +201,15 @@ bool RenderView::shouldDoFullRepaintForNextLayout() const |
if (height() != viewHeight()) { |
if (RenderObject* backgroundRenderer = this->backgroundRenderer()) { |
- if (backgroundRenderer->mustRepaintFillLayersOnHeightChange(*backgroundRenderer->style()->backgroundLayers())) |
+ // When background-attachment is 'fixed', we treat the viewport (instead of the 'root' |
+ // i.e. html or body) as the background positioning area, and we should full repaint |
+ // viewport resize if the background image is not composited and needs full repaint on |
+ // background positioning area resize. |
+ if (!m_compositor || !m_compositor->needsFixedRootBackgroundLayer(layer())) { |
+ if (backgroundRenderer->style()->hasFixedBackgroundImage() |
+ && mustRepaintFillLayersOnHeightChange(*backgroundRenderer->style()->backgroundLayers())) |
return true; |
+ } |
} |
} |