| Index: Source/core/layout/PaintInvalidationState.cpp
|
| diff --git a/Source/core/layout/PaintInvalidationState.cpp b/Source/core/layout/PaintInvalidationState.cpp
|
| index 753e81fdc8a18030eafb30e7359c408144417704..fa114a411d4221720d87eb2abe90938fe693ce9e 100644
|
| --- a/Source/core/layout/PaintInvalidationState.cpp
|
| +++ b/Source/core/layout/PaintInvalidationState.cpp
|
| @@ -16,7 +16,7 @@ namespace blink {
|
| PaintInvalidationState::PaintInvalidationState(const LayoutView& layoutView, Vector<LayoutObject*>& pendingDelayedPaintInvalidations, PaintInvalidationState* ownerPaintInvalidationState)
|
| : m_clipped(false)
|
| , m_cachedOffsetsEnabled(true)
|
| - , m_ancestorHadPaintInvalidationForLocationChange(false)
|
| + , m_forcedSubtreeInvalidationWithinContainer(false)
|
| , m_paintInvalidationContainer(*layoutView.containerForPaintInvalidation())
|
| , m_pendingDelayedPaintInvalidations(pendingDelayedPaintInvalidations)
|
| {
|
| @@ -27,8 +27,8 @@ PaintInvalidationState::PaintInvalidationState(const LayoutView& layoutView, Vec
|
| m_cachedOffsetsEnabled = false;
|
| return;
|
| }
|
| - if (ownerPaintInvalidationState && ownerPaintInvalidationState->m_ancestorHadPaintInvalidationForLocationChange)
|
| - m_ancestorHadPaintInvalidationForLocationChange = true;
|
| + if (ownerPaintInvalidationState && ownerPaintInvalidationState->m_forcedSubtreeInvalidationWithinContainer)
|
| + m_forcedSubtreeInvalidationWithinContainer = true;
|
| FloatPoint point = layoutView.localToContainerPoint(FloatPoint(), &m_paintInvalidationContainer, TraverseDocumentBoundaries);
|
| m_paintOffset = LayoutSize(point.x(), point.y());
|
| }
|
| @@ -40,7 +40,7 @@ PaintInvalidationState::PaintInvalidationState(const LayoutView& layoutView, Vec
|
| PaintInvalidationState::PaintInvalidationState(PaintInvalidationState& next, LayoutBoxModelObject& layoutObject, const LayoutBoxModelObject& paintInvalidationContainer)
|
| : m_clipped(false)
|
| , m_cachedOffsetsEnabled(true)
|
| - , m_ancestorHadPaintInvalidationForLocationChange(next.m_ancestorHadPaintInvalidationForLocationChange)
|
| + , m_forcedSubtreeInvalidationWithinContainer(next.m_forcedSubtreeInvalidationWithinContainer)
|
| , m_paintInvalidationContainer(paintInvalidationContainer)
|
| , m_pendingDelayedPaintInvalidations(next.pendingDelayedPaintInvalidationTargets())
|
| {
|
| @@ -52,9 +52,10 @@ PaintInvalidationState::PaintInvalidationState(PaintInvalidationState& next, Lay
|
| m_cachedOffsetsEnabled = false;
|
| if (establishesPaintInvalidationContainer) {
|
| // When we hit a new paint invalidation container, we don't need to
|
| - // continue forcing a check for paint invalidation because movement
|
| - // from our parents will just move the whole invalidation container.
|
| - m_ancestorHadPaintInvalidationForLocationChange = false;
|
| + // continue forcing a check for paint invalidation, since we're
|
| + // descending into a different invalidation container. (For instance if
|
| + // our parents were moved, the entire container will just move.)
|
| + m_forcedSubtreeInvalidationWithinContainer = false;
|
| } else {
|
| if (m_cachedOffsetsEnabled) {
|
| if (fixed) {
|
| @@ -96,7 +97,7 @@ PaintInvalidationState::PaintInvalidationState(PaintInvalidationState& next, Lay
|
| PaintInvalidationState::PaintInvalidationState(PaintInvalidationState& next, const LayoutSVGModelObject& layoutObject)
|
| : m_clipped(next.m_clipped)
|
| , m_cachedOffsetsEnabled(next.m_cachedOffsetsEnabled)
|
| - , m_ancestorHadPaintInvalidationForLocationChange(next.m_ancestorHadPaintInvalidationForLocationChange)
|
| + , m_forcedSubtreeInvalidationWithinContainer(next.m_forcedSubtreeInvalidationWithinContainer)
|
| , m_clipRect(next.m_clipRect)
|
| , m_paintOffset(next.m_paintOffset)
|
| , m_paintInvalidationContainer(next.m_paintInvalidationContainer)
|
|
|