Skip to content

fix: deactivate active pseudo selectors on unregistration#9852

Draft
MatiPl01 wants to merge 1 commit into
mainfrom
@matipl01/deactivate-pseudo-on-removal
Draft

fix: deactivate active pseudo selectors on unregistration#9852
MatiPl01 wants to merge 1 commit into
mainfrom
@matipl01/deactivate-pseudo-on-removal

Conversation

@MatiPl01

@MatiPl01 MatiPl01 commented Jul 2, 2026

Copy link
Copy Markdown
Member

Follow-up to #9775.

When the pseudo styles are unregistered while a selector is active (e.g. a render removes the ':active' value, or the view's style loses its pseudo selectors mid-press), the gesture listeners are detached with the active state still applied: the held value stays in the updates registry and the pseudo lock keeps filtering render transitions for those properties, so the view is stuck at the pseudo value indefinitely.

PseudoStylesRegistry::remove now runs the deactivation transition (active mask back to the defaults) and drops the lock before detaching. Also guards getPropertySettings against properties whose settings never parsed (e.g. a discrete property without allowDiscrete), which the toggle path could previously hit as an uncaught std::out_of_range.

Verified on the iOS simulator: removing ':active' from the style while the finger is down animates the view back to its base value (previously it stayed at the pseudo value forever).

@MatiPl01 MatiPl01 self-assigned this Jul 2, 2026
@MatiPl01 MatiPl01 marked this pull request as draft July 2, 2026 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant