summaryrefslogtreecommitdiff
path: root/gdk/gdkdevice.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2011-01-24 19:55:41 +0100
committerCarlos Garnacho <carlosg@gnome.org>2011-01-24 19:55:41 +0100
commit8fdd8dbc3517b8b002714a2bfa19b2b060da3d05 (patch)
tree71df446a4bc724f834f3174c672127b4d22f7940 /gdk/gdkdevice.c
parente3be6fc24fea7c1453e5821de764c117ce5f34d1 (diff)
downloadgtk+-8fdd8dbc3517b8b002714a2bfa19b2b060da3d05.tar.gz
Do not modify associated device for non-master devices on dispose
Only master devices must modify the associated device to separate a pointer/keyboard pair, slave devices must only call _gdk_device_remove_slave(). Fixes bugĀ 639767 - password not accepted in gnome-screensaver dialog, reported by Frederic Crozat. On VT-switch, the X server removes its grab on HW devices, the effect on clients is that slave devices disappear, and these were mistakenly mangling the master device hierarchy. so gdk_device_get_associated_device() on the client pointer wouldn't return the paired keyboard anymore. The final effect is that gtkplug-x11 wasn't setting a keyboard to its generated events.
Diffstat (limited to 'gdk/gdkdevice.c')
-rw-r--r--gdk/gdkdevice.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c
index 373dc579f2..2cc3ea88c9 100644
--- a/gdk/gdkdevice.c
+++ b/gdk/gdkdevice.c
@@ -273,7 +273,9 @@ gdk_device_dispose (GObject *object)
if (device->associated)
{
- _gdk_device_set_associated_device (device->associated, NULL);
+ if (device->type == GDK_DEVICE_TYPE_MASTER)
+ _gdk_device_set_associated_device (device->associated, NULL);
+
g_object_unref (device->associated);
device->associated = NULL;
}