GNOME Bugzilla – Bug 684509
Mouse events lost after touch event from virtual core pointer
Last modified: 2012-09-24 17:08:39 UTC
Since touch events now clear the device stage on the last TOUCH_END in _clutter_input_device_remove_event_sequence(), subsequent mouse event on the same device (eg. the virtual core pointer) cannot be delivered until a new ENTER/LEAVE sequence will re-set the device stage. Steps to reproduce: * launch ./tests/interactive/test-events * click on the stage and notice the BUTTON_[PRESS|RELEASE] events on the console * tap the stage and notice the TOUCH_[BEGIN|END] events * click the stage again and notice the lack of BUTTON_* events
Created attachment 224922 [details] [review] x11: set the stage for core events with no associated stage When the last touch has been released the stage on the corresponding master device (eg. the virtual core pointer) is set to NULL and no mouse events can be delivered until an ENTER event has occurred and the stage pointer restored. This is due to the fact that the master devices can send both touch events and mouse events, forwarding events coming from the attached slave devices. To restore delivery of mouse events we need to ensure that the stage is set on each ButtonPress, ButtonRelease and Motion event coming from master devices.
Attachment 224922 [details] pushed to master after slight modifications (indentation, and removed redundant lookups).