diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2011-01-24 19:55:41 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2011-01-24 19:55:41 +0100 |
commit | 8fdd8dbc3517b8b002714a2bfa19b2b060da3d05 (patch) | |
tree | 71df446a4bc724f834f3174c672127b4d22f7940 /gdk/gdkdevice.c | |
parent | e3be6fc24fea7c1453e5821de764c117ce5f34d1 (diff) | |
download | gtk+-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.c | 4 |
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; } |