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.
This commit is contained in:
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user