From 3189369c9dabdb08d029d061f8a074736e1b2cfb Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Tue, 22 Oct 2019 11:56:24 -0700 Subject: Backport PR #1146 to fix a bug that #1142 introduced --- 1146.patch | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 1146.patch (limited to '1146.patch') diff --git a/1146.patch b/1146.patch new file mode 100644 index 0000000..1f77d26 --- /dev/null +++ b/1146.patch @@ -0,0 +1,76 @@ +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 + -- cgit