diff --git a/clutter/clutter-input-device.c b/clutter/clutter-input-device.c index 07958e7e8..c3109df04 100644 --- a/clutter/clutter-input-device.c +++ b/clutter/clutter-input-device.c @@ -45,7 +45,8 @@ enum PROP_0, PROP_ID, - PROP_DEVICE_TYPE + PROP_DEVICE_TYPE, + PROP_NAME }; G_DEFINE_TYPE (ClutterInputDevice, clutter_input_device, G_TYPE_OBJECT); @@ -68,6 +69,10 @@ clutter_input_device_set_property (GObject *gobject, self->device_type = g_value_get_enum (value); break; + case PROP_NAME: + self->device_name = g_strdup (g_value_get_string (value)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; @@ -92,6 +97,10 @@ clutter_input_device_get_property (GObject *gobject, g_value_set_enum (value, self->device_type); break; + case PROP_NAME: + g_value_set_string (value, self->device_name); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); break; @@ -123,6 +132,21 @@ clutter_input_device_class_init (ClutterInputDeviceClass *klass) G_PARAM_CONSTRUCT_ONLY); g_object_class_install_property (gobject_class, PROP_ID, pspec); + /** + * ClutterInputDevice:name: + * + * The name of the device + * + * Since: 1.2 + */ + pspec = g_param_spec_string ("name", + "Name", + "The name of the device", + NULL, + CLUTTER_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY); + g_object_class_install_property (gobject_class, PROP_NAME, pspec); + /** * ClutterInputDevice:device-type: * @@ -478,3 +502,23 @@ clutter_input_device_get_pointer_actor (ClutterInputDevice *device) return device->cursor_actor; } + +/** + * clutter_input_device_get_device_name: + * @device: a #ClutterInputDevice + * + * Retrieves the name of the @device + * + * Return value: the name of the device, or %NULL. The returned string + * is owned by the #ClutterInputDevice and should never be modified + * or freed + * + * Since: 1.2 + */ +G_CONST_RETURN gchar * +clutter_input_device_get_device_name (ClutterInputDevice *device) +{ + g_return_val_if_fail (CLUTTER_IS_INPUT_DEVICE (device), NULL); + + return device->device_name; +} diff --git a/clutter/clutter-input-device.h b/clutter/clutter-input-device.h index eba3fc793..4b8cc9470 100644 --- a/clutter/clutter-input-device.h +++ b/clutter/clutter-input-device.h @@ -42,9 +42,8 @@ G_BEGIN_DECLS /** * ClutterInputDevice: * - * Generic representation of an input device. The - * actual contents of this structure depend on the - * backend used. + * Generic representation of an input device. The actual contents of this + * structure depend on the backend used. */ typedef struct _ClutterInputDevice ClutterInputDevice; typedef struct _ClutterInputDeviceClass ClutterInputDeviceClass; @@ -93,6 +92,7 @@ void clutter_input_device_get_device_coords (ClutterInputDevic gint *x, gint *y); ClutterActor * clutter_input_device_get_pointer_actor (ClutterInputDevice *device); +G_CONST_RETURN gchar * clutter_input_device_get_device_name (ClutterInputDevice *device); G_END_DECLS diff --git a/clutter/clutter-private.h b/clutter/clutter-private.h index 6508f08b3..99862d5cb 100644 --- a/clutter/clutter-private.h +++ b/clutter/clutter-private.h @@ -91,19 +91,28 @@ struct _ClutterInputDevice ClutterInputDeviceType device_type; + gchar *device_name; + + /* the actor underneath the pointer */ ClutterActor *cursor_actor; + + /* the actor that has a grab in place for the device */ ClutterActor *pointer_grab_actor; + /* the current click count */ gint click_count; + /* the stage the device is on */ ClutterStage *stage; + /* the current state */ gint current_x; gint current_y; guint32 current_time; gint current_button_number; ClutterModifierType current_state; + /* the previous state, used for click count generation */ gint previous_x; gint previous_y; guint32 previous_time;