summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-06-26 14:23:16 +0200
committerCarlos Garnacho <carlosg@gnome.org>2015-06-26 14:35:41 +0200
commit8509a07a08ca34367f20783384df35074fb77f3e (patch)
treef9cb3851c128c2a6f3fb37e9c17c0c69fe03caf9
parent1178a0ac8bcbdf50d85298e606abd3f64b06bbe4 (diff)
downloadgtk+-8509a07a08ca34367f20783384df35074fb77f3e.tar.gz
wayland: Set the master device on the drop-side GdkDragContext
And force the ungrab on it, instead of the slave, in the case of local DnD drop. This avoids confusions on the pointer events spawn from DnD, as GDK doesn't think anymore those are from a slave device. Most namely, it fixes the stuck grab when finishing DnD on the same app it was started from.
-rw-r--r--gdk/wayland/gdkdevice-wayland.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 1e17c77487..d16c92f617 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -800,7 +800,7 @@ data_device_drop (void *data,
local_dnd_owner = gdk_selection_owner_get_for_display (device->display, gdk_drag_get_selection (device->drop_context));
if (local_dnd_owner)
- gdk_wayland_device_unset_grab (device->pointer);
+ gdk_wayland_device_unset_grab (device->master_pointer);
_gdk_wayland_drag_context_emit_event (device->drop_context,
GDK_DROP_START, GDK_CURRENT_TIME);
@@ -1712,7 +1712,7 @@ seat_handle_capabilities (void *data,
device_manager->devices =
g_list_prepend (device_manager->devices, device->pointer);
- device->drop_context = _gdk_wayland_drop_context_new (device->pointer,
+ device->drop_context = _gdk_wayland_drop_context_new (device->master_pointer,
device->data_device);
g_signal_emit_by_name (device_manager, "device-added", device->pointer);