From ea5b691ac6951c1415d909210d3944d113cd5766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 22 Jun 2016 17:38:00 +0800 Subject: [PATCH] ClutterVirtualInputDevice: Store the device type https://bugzilla.gnome.org/show_bug.cgi?id=765009 --- .../clutter/clutter-virtual-input-device.c | 25 +++++++++++++++++++ .../clutter/clutter-virtual-input-device.h | 2 ++ .../evdev/clutter-device-manager-evdev.c | 1 + 3 files changed, 28 insertions(+) diff --git a/clutter/clutter/clutter-virtual-input-device.c b/clutter/clutter/clutter-virtual-input-device.c index f79d7c43b..ab19e650a 100644 --- a/clutter/clutter/clutter-virtual-input-device.c +++ b/clutter/clutter/clutter-virtual-input-device.c @@ -31,12 +31,14 @@ #include "clutter-device-manager.h" #include "clutter-private.h" +#include "clutter-enum-types.h" enum { PROP_0, PROP_DEVICE_MANAGER, + PROP_DEVICE_TYPE, PROP_LAST }; @@ -46,6 +48,7 @@ static GParamSpec *obj_props[PROP_LAST]; typedef struct _ClutterVirtualInputDevicePrivate { ClutterDeviceManager *manager; + ClutterInputDeviceType device_type; } ClutterVirtualInputDevicePrivate; G_DEFINE_TYPE_WITH_PRIVATE (ClutterVirtualInputDevice, @@ -109,6 +112,15 @@ clutter_virtual_input_device_get_manager (ClutterVirtualInputDevice *virtual_dev return priv->manager; } +int +clutter_virtual_input_device_get_device_type (ClutterVirtualInputDevice *virtual_device) +{ + ClutterVirtualInputDevicePrivate *priv = + clutter_virtual_input_device_get_instance_private (virtual_device); + + return priv->device_type; +} + static void clutter_virtual_input_device_get_property (GObject *object, guint prop_id, @@ -125,6 +137,9 @@ clutter_virtual_input_device_get_property (GObject *object, case PROP_DEVICE_MANAGER: g_value_set_object (value, priv->manager); break; + case PROP_DEVICE_TYPE: + g_value_set_enum (value, priv->device_type); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -147,6 +162,9 @@ clutter_virtual_input_device_set_property (GObject *object, case PROP_DEVICE_MANAGER: priv->manager = g_value_get_object (value); break; + case PROP_DEVICE_TYPE: + priv->device_type = g_value_get_enum (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -172,6 +190,13 @@ clutter_virtual_input_device_class_init (ClutterVirtualInputDeviceClass *klass) P_("The device manager instance"), CLUTTER_TYPE_DEVICE_MANAGER, CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + obj_props[PROP_DEVICE_TYPE] = + g_param_spec_enum ("device-type", + P_("Device type"), + P_("Device type"), + CLUTTER_TYPE_INPUT_DEVICE_TYPE, + CLUTTER_POINTER_DEVICE, + CLUTTER_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, PROP_LAST, obj_props); } diff --git a/clutter/clutter/clutter-virtual-input-device.h b/clutter/clutter/clutter-virtual-input-device.h index d1a27d77d..976c123f9 100644 --- a/clutter/clutter/clutter-virtual-input-device.h +++ b/clutter/clutter/clutter-virtual-input-device.h @@ -94,4 +94,6 @@ void clutter_virtual_input_device_notify_key (ClutterVirtualInputDevice *virtual ClutterDeviceManager * clutter_virtual_input_device_get_manager (ClutterVirtualInputDevice *virtual_device); +int clutter_virtual_input_device_get_device_type (ClutterVirtualInputDevice *virtual_device); + #endif /* __CLUTTER_VIRTUAL_INPUT_DEVICE_H__ */ diff --git a/clutter/clutter/evdev/clutter-device-manager-evdev.c b/clutter/clutter/evdev/clutter-device-manager-evdev.c index 8a29629d4..90e23b91f 100644 --- a/clutter/clutter/evdev/clutter-device-manager-evdev.c +++ b/clutter/clutter/evdev/clutter-device-manager-evdev.c @@ -1965,6 +1965,7 @@ clutter_device_manager_evdev_create_virtual_device (ClutterDeviceManager *manag { return g_object_new (CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE_EVDEV, "device-manager", manager, + "device-type", device_type, NULL); }