Wayland: Fix stuck pointer buttons on window leave #106414
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #105908.
Fixes #106284.
This issue came from the frame-based refactoring done in the multiwin PR.
It looks like some (all?) compositors group certain events alongside
wl_pointer::leave
, which I absolutely did not expect. The docs don't seem to mention it either from what I can tell.We now fall-back on the old pointed window if and only if the current window is invalid and the old one isn't. Each state fetch is guarded with an
ERR_FAIL_NULL
so this should still catch any potentially corrupted window with missing data but a valid ID.I also added the usual big comment so that this "quirk" does not get lost to time.