From f1699407426e4664061a5effb022ddbd8f27a925 Mon Sep 17 00:00:00 2001 From: FranklinDM Date: Fri, 24 Mar 2023 19:34:55 +0800 Subject: [PATCH] Issue #2135 - Don't discard event state mask when matching ::slotted() or :host arguments This should fix issues with selectors like :host(:hover) that continue to be matched although the cursor is no longer hovering over those elements. --- layout/style/nsCSSRuleProcessor.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/layout/style/nsCSSRuleProcessor.cpp b/layout/style/nsCSSRuleProcessor.cpp index 55b7293f6a..6b25ae0dde 100644 --- a/layout/style/nsCSSRuleProcessor.cpp +++ b/layout/style/nsCSSRuleProcessor.cpp @@ -1997,11 +1997,9 @@ static bool SelectorMatches(Element* aElement, return false; } - NodeMatchContext nodeContext(EventStates(), - aNodeMatchContext.mIsRelevantLink); if (!SelectorListMatches(aElement, pseudoClass, - nodeContext, + aNodeMatchContext, aTreeMatchContext)) { return false; } @@ -2049,7 +2047,7 @@ static bool SelectorMatches(Element* aElement, // Match if any selector in the argument list matches. // FIXME: What this effectively does is bypass the "featureless" // selector check under SelectorMatches. - NodeMatchContext nodeContext(EventStates(), + NodeMatchContext nodeContext(aNodeMatchContext.mStateMask, aNodeMatchContext.mIsRelevantLink); if (!SelectorListMatches(aElement, pseudoClass,