Index: Source/core/rendering/RenderObject.h |
diff --git a/Source/core/rendering/RenderObject.h b/Source/core/rendering/RenderObject.h |
index a839e00cba7f072db3a3bb163123945e200d04d2..d5ca1cb460fd289ed47f264d3b70185bf400c99b 100644 |
--- a/Source/core/rendering/RenderObject.h |
+++ b/Source/core/rendering/RenderObject.h |
@@ -33,6 +33,7 @@ |
#include "core/fetch/ImageResourceClient.h" |
#include "core/html/HTMLElement.h" |
#include "core/rendering/HitTestRequest.h" |
+#include "core/rendering/PaintInvalidationState.h" |
#include "core/rendering/PaintPhase.h" |
#include "core/rendering/RenderObjectChildList.h" |
#include "core/rendering/ScrollAlignment.h" |
@@ -55,7 +56,6 @@ class HitTestLocation; |
class HitTestResult; |
class InlineBox; |
class InlineFlowBox; |
-class PaintInvalidationState; |
class Position; |
class PositionWithAffinity; |
class PseudoStyleRequest; |
@@ -859,7 +859,7 @@ public: |
// Invalidate the paint of a specific subrectangle within a given object. The rect |r| is in the object's coordinate space. |
void invalidatePaintRectangle(const LayoutRect&) const; |
- bool invalidatePaintIfNeeded(const RenderLayerModelObject& paintInvalidationContainer, |
+ InvalidationReason invalidatePaintIfNeeded(const RenderLayerModelObject& paintInvalidationContainer, |
const LayoutRect& oldBounds, const LayoutPoint& oldPositionFromPaintInvalidationContainer, const PaintInvalidationState&); |
// Walk the tree after layout issuing paint invalidations for renderers that have changed or moved, updating bounds that have changed, and clearing paint invalidation state. |
@@ -1036,7 +1036,7 @@ public: |
bool onlyNeededPositionedMovementLayout() const { return m_bitfields.onlyNeededPositionedMovementLayout(); } |
void setOnlyNeededPositionedMovementLayout(bool b) { m_bitfields.setOnlyNeededPositionedMovementLayout(b); } |
- virtual void clearPaintInvalidationState(); |
+ virtual void clearPaintInvalidationState(const PaintInvalidationState&); |
// layoutDidGetCalled indicates whether this render object was re-laid-out |
// since the last call to setLayoutDidGetCalled(false) on this object. |
@@ -1056,7 +1056,12 @@ public: |
bool neededLayoutBecauseOfChildren() const { return m_bitfields.neededLayoutBecauseOfChildren(); } |
void setNeededLayoutBecauseOfChildren(bool b) { m_bitfields.setNeededLayoutBecauseOfChildren(b); } |
- bool shouldCheckForPaintInvalidation() |
+ bool shouldCheckForPaintInvalidation(const PaintInvalidationState& paintInvalidationState) |
+ { |
+ return paintInvalidationState.forceCheckForPaintInvalidation() || shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState(); |
+ } |
+ |
+ bool shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState() |
{ |
return layoutDidGetCalled() || mayNeedPaintInvalidation() || shouldDoFullPaintInvalidation() || shouldDoFullPaintInvalidationIfSelfPaintingLayer(); |
} |
@@ -1157,7 +1162,7 @@ private: |
void markContainingBlockChainForPaintInvalidation() |
{ |
- for (RenderObject* container = this->container(); container && !container->shouldCheckForPaintInvalidation(); container = container->container()) |
+ for (RenderObject* container = this->container(); container && !container->shouldCheckForPaintInvalidationRegardlessOfPaintInvalidationState(); container = container->container()) |
container->setMayNeedPaintInvalidation(true); |
} |