[clutter/wip/wayland-compositor-help: 4/5] evdev: update the state of the core pointer and core keyboard for all events
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter/wip/wayland-compositor-help: 4/5] evdev: update the state of the core pointer and core keyboard for all events
- Date: Wed, 4 Sep 2013 13:21:43 +0000 (UTC)
commit 3f5efa4984acb11fa16a9297b642c0ffc06ffc37
Author: Giovanni Campagna <gcampagn redhat com>
Date: Wed Sep 4 13:36:41 2013 +0200
evdev: update the state of the core pointer and core keyboard for all events
These two devices are logically tied togheter, and their state
should always be the same. Also, we need to update them after
the event is queued, as the current modifier state (as opposed to the
modifier mask in the event) should include also the effect of the last
key press/release.
https://bugzilla.gnome.org/show_bug.cgi?id=706494
clutter/evdev/clutter-device-manager-evdev.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/clutter/evdev/clutter-device-manager-evdev.c b/clutter/evdev/clutter-device-manager-evdev.c
index 17c48c8..d4ff4b8 100644
--- a/clutter/evdev/clutter-device-manager-evdev.c
+++ b/clutter/evdev/clutter-device-manager-evdev.c
@@ -539,9 +539,21 @@ clutter_event_dispatch (GSource *g_source,
if (event)
{
+ ClutterModifierType event_state;
+ ClutterInputDevice *input_device;
+ ClutterDeviceManagerEvdev *manager_evdev;
+
+ input_device = CLUTTER_INPUT_DEVICE (source->device);
+ manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (input_device->device_manager);
+
/* forward the event into clutter for emission etc. */
clutter_do_event (event);
clutter_event_free (event);
+
+ /* update the device states *after* the event */
+ event_state = xkb_state_serialize_mods (manager_evdev->priv->xkb, XKB_STATE_MODS_EFFECTIVE);
+ _clutter_input_device_set_state (manager_evdev->priv->core_pointer, event_state);
+ _clutter_input_device_set_state (manager_evdev->priv->core_keyboard, event_state);
}
out:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]