Index: Source/core/rendering/RenderBlockFlow.cpp |
diff --git a/Source/core/rendering/RenderBlockFlow.cpp b/Source/core/rendering/RenderBlockFlow.cpp |
index 92c33e71223bf444d65909ffed08b5068e73a457..df4eb4890dd809149065a29b96bf5c1a9cf5b5d1 100644 |
--- a/Source/core/rendering/RenderBlockFlow.cpp |
+++ b/Source/core/rendering/RenderBlockFlow.cpp |
@@ -369,8 +369,16 @@ void RenderBlockFlow::layoutBlock(bool relayoutChildren) |
// we overflow or not. |
updateScrollInfoAfterLayout(); |
- if (m_repaintLogicalTop != m_repaintLogicalBottom && (style()->visibility() == VISIBLE || enclosingLayer()->hasVisibleContent())) |
- setShouldInvalidateOverflowForPaint(true); |
+ if (m_repaintLogicalTop != m_repaintLogicalBottom) { |
+ bool hasVisibleContent = style()->visibility() == VISIBLE; |
+ if (!hasVisibleContent) { |
+ RenderLayer* layer = enclosingLayer(); |
+ layer->updateDescendantDependentFlags(); |
+ hasVisibleContent = layer->hasVisibleContent(); |
+ } |
+ if (hasVisibleContent) |
+ setShouldInvalidateOverflowForPaint(true); |
+ } |
clearNeedsLayout(); |
} |