Index: Source/core/layout/svg/LayoutSVGText.cpp |
diff --git a/Source/core/layout/svg/LayoutSVGText.cpp b/Source/core/layout/svg/LayoutSVGText.cpp |
index 86e5bbeb7c19edefd1c587bcbf48b1f5848aa343..9f54daf628f4eed9752cb39ae9fb1fbada199257 100644 |
--- a/Source/core/layout/svg/LayoutSVGText.cpp |
+++ b/Source/core/layout/svg/LayoutSVGText.cpp |
@@ -25,7 +25,6 @@ |
*/ |
#include "config.h" |
- |
#include "core/layout/svg/LayoutSVGText.h" |
#include "core/editing/PositionWithAffinity.h" |
@@ -33,6 +32,7 @@ |
#include "core/layout/HitTestResult.h" |
#include "core/layout/LayoutAnalyzer.h" |
#include "core/layout/LayoutState.h" |
+#include "core/layout/LayoutView.h" |
#include "core/layout/PointerEventsHitRules.h" |
#include "core/layout/api/LineLayoutItem.h" |
#include "core/layout/svg/LayoutSVGInline.h" |
@@ -517,4 +517,24 @@ void LayoutSVGText::removeChild(LayoutObject* child) |
subtreeChildWasRemoved(affectedAttributes); |
} |
+void LayoutSVGText::invalidateTreeIfNeeded(PaintInvalidationState& paintInvalidationState) |
+{ |
+ ASSERT(!needsLayout()); |
+ |
+ if (!shouldCheckForPaintInvalidation(paintInvalidationState)) |
+ return; |
+ |
+ PaintInvalidationReason reason = invalidatePaintIfNeeded(paintInvalidationState, paintInvalidationState.paintInvalidationContainer()); |
+ clearPaintInvalidationState(paintInvalidationState); |
+ |
+ if (reason == PaintInvalidationDelayedFull) |
+ paintInvalidationState.pushDelayedPaintInvalidationTarget(*this); |
+ |
+ ForceHorriblySlowRectMapping slowRectMapping(&paintInvalidationState); |
+ PaintInvalidationState childTreeWalkState(paintInvalidationState, *this, paintInvalidationState.paintInvalidationContainer()); |
+ if (reason == PaintInvalidationSVGResourceChange) |
+ childTreeWalkState.setForceSubtreeInvalidationWithinContainer(); |
+ invalidatePaintOfSubtreesIfNeeded(childTreeWalkState); |
+} |
+ |
} |