Index: Source/core/layout/LayoutBlock.cpp |
diff --git a/Source/core/layout/LayoutBlock.cpp b/Source/core/layout/LayoutBlock.cpp |
index 116c979367c9b7c7fc0eb820d6eeff761531ee70..b21c7dab351efadb41b54cd017833cfdbb46e521 100644 |
--- a/Source/core/layout/LayoutBlock.cpp |
+++ b/Source/core/layout/LayoutBlock.cpp |
@@ -368,13 +368,24 @@ inline static void invalidateDisplayItemClientForStartOfContinuationsIfNeeded(co |
startOfContinuations->invalidateDisplayItemClient(*startOfContinuations); |
} |
-void LayoutBlock::invalidateDisplayItemClients(const LayoutBoxModelObject& paintInvalidationContainer) const |
+void LayoutBlock::invalidateDisplayItemClients(const LayoutBoxModelObject& paintInvalidationContainer) |
{ |
LayoutBox::invalidateDisplayItemClients(paintInvalidationContainer); |
ASSERT(RuntimeEnabledFeatures::slimmingPaintEnabled()); |
invalidateDisplayItemClientForStartOfContinuationsIfNeeded(*this); |
} |
+void LayoutBlock::clearRepaintFlagsOfSubtrees() |
+{ |
+ LayoutBox::clearRepaintFlagsOfSubtrees(); |
+ // TODO(wangxianzhu): We should traverse in painting order instead of positioning order. |
+ // See comments in LayoutObject::markContainerChainForChildNeedsRepaint. |
+ if (TrackedLayoutBoxListHashSet* positionedObjects = this->positionedObjects()) { |
+ for (auto o : *positionedObjects) |
+ o->clearRepaintFlagsRecursively(); |
+ } |
+} |
+ |
void LayoutBlock::addChildIgnoringContinuation(LayoutObject* newChild, LayoutObject* beforeChild) |
{ |
if (beforeChild && beforeChild->parent() != this) { |