[gtk+] x11: Update seat capabilities
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] x11: Update seat capabilities
- Date: Thu, 25 Feb 2016 11:21:38 +0000 (UTC)
commit e12663378c3efdfc5995bd6222497700e01f54d9
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Feb 25 06:18:41 2016 -0500
x11: Update seat capabilities
The default seat implementation was never returning capabilities,
which is broken. It is visible too, since the inspector shows seat
information now.
gdk/gdkseatdefault.c | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
---
diff --git a/gdk/gdkseatdefault.c b/gdk/gdkseatdefault.c
index 9b51769..41e0db2 100644
--- a/gdk/gdkseatdefault.c
+++ b/gdk/gdkseatdefault.c
@@ -28,6 +28,7 @@ struct _GdkSeatDefaultPrivate
GdkDevice *master_keyboard;
GList *slave_pointers;
GList *slave_keyboards;
+ GdkSeatCapabilities capabilities;
};
#define KEYBOARD_EVENTS (GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | \
@@ -86,8 +87,11 @@ gdk_seat_dispose (GObject *object)
static GdkSeatCapabilities
gdk_seat_default_get_capabilities (GdkSeat *seat)
{
- /* FIXME */
- return GDK_SEAT_CAPABILITY_NONE;
+ GdkSeatDefaultPrivate *priv;
+
+ priv = gdk_seat_default_get_instance_private (GDK_SEAT_DEFAULT (seat));
+
+ return priv->capabilities;
}
static GdkGrabStatus
@@ -314,6 +318,8 @@ gdk_seat_default_add_slave (GdkSeatDefault *seat,
return;
}
+ priv->capabilities |= capability;
+
gdk_seat_device_added (GDK_SEAT (seat), device);
}
@@ -322,6 +328,7 @@ gdk_seat_default_remove_slave (GdkSeatDefault *seat,
GdkDevice *device)
{
GdkSeatDefaultPrivate *priv;
+ GList *l;
g_return_if_fail (GDK_IS_SEAT_DEFAULT (seat));
g_return_if_fail (GDK_IS_DEVICE (device));
@@ -331,11 +338,20 @@ gdk_seat_default_remove_slave (GdkSeatDefault *seat,
if (g_list_find (priv->slave_pointers, device))
{
priv->slave_pointers = g_list_remove (priv->slave_pointers, device);
+
+ priv->capabilities &= ~(GDK_SEAT_CAPABILITY_POINTER | GDK_SEAT_CAPABILITY_TOUCH);
+ for (l = priv->slave_pointers; l; l = l->next)
+ priv->capabilities |= device_get_capability (GDK_DEVICE (l->data));
+
gdk_seat_device_removed (GDK_SEAT (seat), device);
}
else if (g_list_find (priv->slave_keyboards, device))
{
priv->slave_keyboards = g_list_remove (priv->slave_keyboards, device);
+
+ if (priv->slave_keyboards == NULL)
+ priv->capabilities &= ~GDK_SEAT_CAPABILITY_KEYBOARD;
+
gdk_seat_device_removed (GDK_SEAT (seat), device);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]