diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-02-04 17:17:23 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2016-04-05 18:56:35 +0200 |
commit | edff3f70233581a10fadabbd37d7a6ef82ded0c8 (patch) | |
tree | 3170869887d55ead41190dc31b46273198d34754 | |
parent | 69e32ad20a06e909b22087770c8e9b0451056372 (diff) | |
download | clutter-edff3f70233581a10fadabbd37d7a6ef82ded0c8.tar.gz |
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.
-rw-r--r-- | clutter/clutter-device-manager-private.h | 5 | ||||
-rw-r--r-- | clutter/clutter-input-device.c | 14 | ||||
-rw-r--r-- | clutter/clutter-main.c | 3 |
3 files changed, 22 insertions, 0 deletions
diff --git a/clutter/clutter-device-manager-private.h b/clutter/clutter-device-manager-private.h index 3b33135af..6af3295b6 100644 --- a/clutter/clutter-device-manager-private.h +++ b/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-input-device.c b/clutter/clutter-input-device.c index add413d47..216644af0 100644 --- a/clutter/clutter-input-device.c +++ b/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-main.c b/clutter/clutter-main.c index 78327e62c..99cfdc5c4 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -2517,6 +2517,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; |