summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-02-04 17:17:23 +0100
committerCarlos Garnacho <carlosg@gnome.org>2016-04-05 18:56:35 +0200
commitedff3f70233581a10fadabbd37d7a6ef82ded0c8 (patch)
tree3170869887d55ead41190dc31b46273198d34754
parent69e32ad20a06e909b22087770c8e9b0451056372 (diff)
downloadclutter-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.h5
-rw-r--r--clutter/clutter-input-device.c14
-rw-r--r--clutter/clutter-main.c3
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;