gdk/wayland: Use serial of the latest implicit grab available
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 19 Oct 2022 10:46:09 +0000 (12:46 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Wed, 19 Oct 2022 11:54:07 +0000 (13:54 +0200)
When getting the serial for primary/clipboard selections we used a
function that largely relied on a GdkEvent being passed. We have
another available function that looks up the most recent serial
given the ongoing touch/tablet input as well.

This is the second best, compared to actually knowing the
input/device from the event that was received by the UI an triggered
the clipboard operation, and is already in use in other places
(e.g. window dragging). It is valid for these situations too.

Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5250
gdk/wayland/gdkdevice-wayland.c
gdk/wayland/gdkprimary-wayland.c

index 98e08ecb5feb5e62a4c1aebeb00fc904f4dc9780..c6a3bacaa8eef983df8ee59a1a171c55f8ef87b1 100644 (file)
@@ -5323,7 +5323,7 @@ gdk_wayland_device_set_selection (GdkDevice             *gdk_device,
   g_return_if_fail (GDK_IS_WAYLAND_DEVICE (gdk_device));
 
   seat = GDK_WAYLAND_SEAT (gdk_device_get_seat (gdk_device));
-  serial = _gdk_wayland_seat_get_implicit_grab_serial (GDK_SEAT (seat), NULL);
+  serial = _gdk_wayland_seat_get_last_implicit_grab_serial (seat, NULL);
   wl_data_device_set_selection (seat->data_device, source, serial);
 }
 
index 6cef2f3968d05cac04f1951b1516d41694f1d9ea..b501deb66beaaf0f4e05ffac155a49d889d9ad05 100644 (file)
@@ -292,7 +292,8 @@ gdk_wayland_primary_claim (GdkClipboard       *clipboard,
         }
 
       seat = gdk_display_get_default_seat (GDK_DISPLAY (wdisplay));
-      serial = _gdk_wayland_seat_get_implicit_grab_serial (seat, NULL);
+      serial = _gdk_wayland_seat_get_last_implicit_grab_serial (GDK_WAYLAND_SEAT (seat),
+                                                                NULL);
       zwp_primary_selection_device_v1_set_selection (cb->primary_data_device,
                                                      cb->source,
                                                      serial);