Commit 8fdd8dbc authored by Carlos Garnacho's avatar Carlos Garnacho

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.
parent e3be6fc2
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment