From eafa04230b36f6dfceaa2cfa1c6342385082318c Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 4 Feb 2015 17:17:23 +0100 Subject: [PATCH] main: Allow updating device axes from the current tool This way devices are ensured the proper axis status at the time of processing the events. --- clutter/clutter/clutter-device-manager-private.h | 5 +++++ clutter/clutter/clutter-input-device.c | 14 ++++++++++++++ clutter/clutter/clutter-main.c | 3 +++ 3 files changed, 22 insertions(+) diff --git a/clutter/clutter/clutter-device-manager-private.h b/clutter/clutter/clutter-device-manager-private.h index 3b33135af..6af3295b6 100644 --- a/clutter/clutter/clutter-device-manager-private.h +++ b/clutter/clutter/clutter-device-manager-private.h @@ -145,6 +145,8 @@ struct _ClutterInputDeviceClass gboolean (* keycode_to_evdev) (ClutterInputDevice *device, guint hardware_keycode, guint *evdev_keycode); + void (* update_from_tool) (ClutterInputDevice *device, + ClutterInputDeviceTool *tool); }; /* Platform-dependent interface */ @@ -243,6 +245,9 @@ ClutterInputDeviceTool * clutter_input_device_lookup_tool (ClutterInputDev void clutter_input_device_add_tool (ClutterInputDevice *device, ClutterInputDeviceTool *tool); +void clutter_input_device_update_from_tool (ClutterInputDevice *device, + ClutterInputDeviceTool *tool); + G_END_DECLS #endif /* __CLUTTER_DEVICE_MANAGER_PRIVATE_H__ */ diff --git a/clutter/clutter/clutter-input-device.c b/clutter/clutter/clutter-input-device.c index add413d47..216644af0 100644 --- a/clutter/clutter/clutter-input-device.c +++ b/clutter/clutter/clutter-input-device.c @@ -2052,3 +2052,17 @@ clutter_input_device_lookup_tool (ClutterInputDevice *device, return NULL; } + +void +clutter_input_device_update_from_tool (ClutterInputDevice *device, + ClutterInputDeviceTool *tool) +{ + ClutterInputDeviceClass *device_class; + + g_return_if_fail (CLUTTER_IS_INPUT_DEVICE (device)); + + device_class = CLUTTER_INPUT_DEVICE_GET_CLASS (device); + + if (device_class->update_from_tool) + device_class->update_from_tool (device, tool); +} diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c index 9a4e3ab87..3b862dd50 100644 --- a/clutter/clutter/clutter-main.c +++ b/clutter/clutter/clutter-main.c @@ -2489,6 +2489,9 @@ _clutter_process_event_details (ClutterActor *stage, case CLUTTER_PROXIMITY_IN: case CLUTTER_PROXIMITY_OUT: + clutter_input_device_update_from_tool (clutter_event_get_source_device (event), + clutter_event_get_device_tool (event)); + if (_clutter_event_process_filters (event)) break;