Pointer grabs can cause stuck touchpoints in gesture actions
If a widget adds a grab pointer grab on its button press event, like StButton
does, ClutterGestureAction
will not see the release event and the touchpoint will be considered to remain pressed. This can accidentally trigger actions that only rely on the number of touchpoints, but not on changes to their position, such as the AppSwitchAction
in gnome-shell. A simple way to reproduce this issue is to have multiple apps open, open the OSK and press a OSK-button 4 times without moving the cursor. As long as the 4th press has a slight delay (the long press timeout required for that gesture), this will trigger the action and switch to a different window. This can even be done without any touch-capable device.
One idea to fix this would be to introduce a grabbed
signal to ClutterInputDevice
and listen for those for active touchpoints in ClutterGestureAction
and remove them once a device got grabbed.