Index: Source/core/rendering/RenderObject.h |
diff --git a/Source/core/rendering/RenderObject.h b/Source/core/rendering/RenderObject.h |
index bd27cc85d31a91811bfb79949d3c105b1ab14e10..bbd53eedf4cffd918e1f61829cb4e775fa519cde 100644 |
--- a/Source/core/rendering/RenderObject.h |
+++ b/Source/core/rendering/RenderObject.h |
@@ -1010,6 +1010,21 @@ public: |
bool layoutDidGetCalled() { return m_bitfields.layoutDidGetCalled(); } |
void setLayoutDidGetCalled(bool b) { m_bitfields.setLayoutDidGetCalled(b); } |
+ bool mayNeedInvalidation() { return m_bitfields.mayNeedInvalidation(); } |
+ void setMayNeedInvalidation(bool b) |
+ { |
+ m_bitfields.setMayNeedInvalidation(b); |
+ |
+ // Make sure our parent is marked as needing invalidation. |
+ if (b && parent() && !parent()->mayNeedInvalidation()) |
+ parent()->setMayNeedInvalidation(b); |
+ } |
+ |
+ bool shouldCheckForInvalidationAfterLayout() |
+ { |
+ return layoutDidGetCalled() || mayNeedInvalidation(); |
+ } |
+ |
bool shouldDisableLayoutState() const { return hasColumns() || hasTransform() || hasReflection() || style()->isFlippedBlocksWritingMode(); } |
void setNeedsOverflowRecalcAfterStyleChange(); |
@@ -1125,6 +1140,9 @@ private: |
, m_shouldDoFullRepaintAfterLayout(false) |
, m_shouldRepaintOverflow(false) |
, m_shouldDoFullRepaintIfSelfPaintingLayer(false) |
+ // FIXME: We should remove mayNeedInvalidation once we are able to |
+ // use the other layout flags to detect the same cases. crbug.com/370118 |
+ , m_mayNeedInvalidation(false) |
, m_onlyNeededPositionedMovementLayout(false) |
, m_needsPositionedMovementLayout(false) |
, m_normalChildNeedsLayout(false) |
@@ -1159,11 +1177,12 @@ private: |
{ |
} |
- // 32 bits have been used in the first word, and 5 in the second. |
+ // 32 bits have been used in the first word, and 6 in the second. |
ADD_BOOLEAN_BITFIELD(selfNeedsLayout, SelfNeedsLayout); |
ADD_BOOLEAN_BITFIELD(shouldDoFullRepaintAfterLayout, ShouldDoFullRepaintAfterLayout); |
ADD_BOOLEAN_BITFIELD(shouldRepaintOverflow, ShouldRepaintOverflow); |
ADD_BOOLEAN_BITFIELD(shouldDoFullRepaintIfSelfPaintingLayer, ShouldDoFullRepaintIfSelfPaintingLayer); |
+ ADD_BOOLEAN_BITFIELD(mayNeedInvalidation, MayNeedInvalidation); |
ADD_BOOLEAN_BITFIELD(onlyNeededPositionedMovementLayout, OnlyNeededPositionedMovementLayout); |
ADD_BOOLEAN_BITFIELD(needsPositionedMovementLayout, NeedsPositionedMovementLayout); |
ADD_BOOLEAN_BITFIELD(normalChildNeedsLayout, NormalChildNeedsLayout); |