Index: Source/core/dom/Element.cpp |
diff --git a/Source/core/dom/Element.cpp b/Source/core/dom/Element.cpp |
index eb04d84f1f757cb56c9b9cf073925ec82fe89bba..13f1db1c6e8efa2ac1cb66be3966624cc75bdf0d 100644 |
--- a/Source/core/dom/Element.cpp |
+++ b/Source/core/dom/Element.cpp |
@@ -1598,11 +1598,15 @@ ElementShadow& Element::ensureShadow() |
return ensureElementRareData().ensureShadow(); |
} |
-void Element::didAffectSelector(AffectedSelectorMask mask) |
+void Element::pseudoStateChanged(CSSSelector::PseudoType pseudo) |
{ |
- setNeedsStyleRecalc(SubtreeStyleChange); |
+ StyleResolver* styleResolver = document().styleResolver(); |
+ |
+ if (inActiveDocument() && styleResolver && styleChangeType() < SubtreeStyleChange) |
+ styleResolver->ensureUpdatedRuleFeatureSet().scheduleStyleInvalidationForPseudoChange(pseudo, *this); |
+ |
if (ElementShadow* elementShadow = shadowWhereNodeCanBeDistributed(*this)) |
- elementShadow->didAffectSelector(mask); |
+ elementShadow->distributedNodePseudoStateChanged(pseudo); |
} |
void Element::setAnimationStyleChange(bool animationStyleChange) |