From ba0a0ce0a0e85d57b3ec2010189b4c8c484c2c9f Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 22 Oct 2019 18:36:44 +0200 Subject: [PATCH 1/2] Revert "gdk: Do not call gdk_selection_owner_set() internally to the backend" This reverts commit 7a891eeb6def29f6562a3833c272b0cb2a67ae23. --- gdk/wayland/gdkselection-wayland.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gdk/wayland/gdkselection-wayland.c b/gdk/wayland/gdkselection-wayland.c index e14f50de8d..9494489d69 100644 --- a/gdk/wayland/gdkselection-wayland.c +++ b/gdk/wayland/gdkselection-wayland.c @@ -937,6 +937,7 @@ data_source_cancelled (void *data, gdk_drag_context_cancel (context, GDK_DRAG_CANCEL_ERROR); emit_selection_clear (display, atom); + gdk_selection_owner_set (NULL, atom, GDK_CURRENT_TIME, TRUE); gdk_wayland_selection_unset_data_source (display, atom); } @@ -1047,6 +1048,7 @@ primary_source_cancelled (void *data, atom = atoms[ATOM_PRIMARY]; emit_selection_clear (display, atom); + gdk_selection_owner_set (NULL, atom, GDK_CURRENT_TIME, TRUE); gdk_wayland_selection_unset_data_source (display, atom); } -- 2.22.0 From ff41436b594e04e106c0cd3859080ac80e6e6722 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 22 Oct 2019 18:39:30 +0200 Subject: [PATCH 2/2] gdk: Do not change the windowing selection when cancelling source We are interested in changing the owner window, so the upper bits know that it is not this client who owns the selection. We are still not interested in unsetting the selection desktop-wide though, so only avoid emitting the relevant events then. The same reasonings than in commit 7a891eeb6def apply otherwise. --- gdk/wayland/gdkselection-wayland.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdk/wayland/gdkselection-wayland.c b/gdk/wayland/gdkselection-wayland.c index 9494489d69..a1925edd35 100644 --- a/gdk/wayland/gdkselection-wayland.c +++ b/gdk/wayland/gdkselection-wayland.c @@ -937,7 +937,7 @@ data_source_cancelled (void *data, gdk_drag_context_cancel (context, GDK_DRAG_CANCEL_ERROR); emit_selection_clear (display, atom); - gdk_selection_owner_set (NULL, atom, GDK_CURRENT_TIME, TRUE); + gdk_selection_owner_set (NULL, atom, GDK_CURRENT_TIME, FALSE); gdk_wayland_selection_unset_data_source (display, atom); } @@ -1048,7 +1048,7 @@ primary_source_cancelled (void *data, atom = atoms[ATOM_PRIMARY]; emit_selection_clear (display, atom); - gdk_selection_owner_set (NULL, atom, GDK_CURRENT_TIME, TRUE); + gdk_selection_owner_set (NULL, atom, GDK_CURRENT_TIME, FALSE); gdk_wayland_selection_unset_data_source (display, atom); } -- 2.22.0