diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2016-08-04 18:49:13 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2016-08-23 21:01:44 +0200 |
commit | 40f75e74be35605d1b77fc81e560b8f9e20e2311 (patch) | |
tree | ace352ef2542ba397a38e8ece2bab0443e7827a9 /gdk/gdkdevicetool.c | |
parent | d3c204c77460f0142901dafb11a2252e098a2c59 (diff) | |
download | gtk+-40f75e74be35605d1b77fc81e560b8f9e20e2311.tar.gz |
gdk: Add a getter for the hardware id of a GdkDeviceTool
Although scarcely used, this information may be useful to retrieve
from the windowing systems that offer this information.
https://bugzilla.gnome.org/show_bug.cgi?id=770026
Diffstat (limited to 'gdk/gdkdevicetool.c')
-rw-r--r-- | gdk/gdkdevicetool.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gdk/gdkdevicetool.c b/gdk/gdkdevicetool.c index 3f0781128a..d632504fa4 100644 --- a/gdk/gdkdevicetool.c +++ b/gdk/gdkdevicetool.c @@ -31,6 +31,7 @@ enum { TOOL_PROP_SERIAL, TOOL_PROP_TOOL_TYPE, TOOL_PROP_AXES, + TOOL_PROP_HARDWARE_ID, N_TOOL_PROPS }; @@ -55,6 +56,9 @@ gdk_device_tool_set_property (GObject *object, case TOOL_PROP_AXES: tool->tool_axes = g_value_get_flags (value); break; + case TOOL_PROP_HARDWARE_ID: + tool->hw_id = g_value_get_uint64 (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -80,6 +84,9 @@ gdk_device_tool_get_property (GObject *object, case TOOL_PROP_AXES: g_value_set_flags (value, tool->tool_axes); break; + case TOOL_PROP_HARDWARE_ID: + g_value_set_uint64 (value, tool->hw_id); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -113,6 +120,12 @@ gdk_device_tool_class_init (GdkDeviceToolClass *klass) GDK_TYPE_AXIS_FLAGS, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + tool_props[TOOL_PROP_HARDWARE_ID] = g_param_spec_uint64 ("hardware-id", + "Hardware ID", + "Hardware ID", + 0, G_MAXUINT64, 0, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY); g_object_class_install_properties (object_class, N_TOOL_PROPS, tool_props); } @@ -154,6 +167,32 @@ gdk_device_tool_get_serial (GdkDeviceTool *tool) } /** + * gdk_device_tool_get_hardware_id: + * @tool: a #GdkDeviceTool + * + * Gets the hardware ID of this tool, or 0 if it's not known. When + * non-zero, the identificator is unique for the given tool model, + * meaning that two identical tools will share the same @hardware_id, + * but will have different serial numbers (see gdk_device_tool_get_serial()). + * + * This is a more concrete (and device specific) method to identify + * a #GdkDeviceTool than gdk_device_tool_get_tool_type(), as a tablet + * may support multiple devices with the same #GdkDeviceToolType, + * but having different hardware identificators. + * + * Returns: The hardware identificator of this tool. + * + * Since: 3.22 + **/ +guint64 +gdk_device_tool_get_hardware_id (GdkDeviceTool *tool) +{ + g_return_val_if_fail (tool != NULL, 0); + + return tool->hw_id; +} + +/** * gdk_device_tool_get_tool_type: * @tool: a #GdkDeviceTool * |