[gtk+] wayland: Make the function to get the last serial a seat one



commit f9f558671421762e4799e077eab3c64b8b873cfe
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Feb 23 20:32:31 2016 +0100

    wayland: Make the function to get the last serial a seat one
    
    This will be useful for primary selection.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=762561

 gdk/wayland/gdkdevice-wayland.c  |   12 +++++++-----
 gdk/wayland/gdkprivate-wayland.h |    4 ++--
 gdk/wayland/gdkwindow-wayland.c  |   16 +++++++---------
 3 files changed, 16 insertions(+), 16 deletions(-)
---
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index b8f92fe..f95b65a 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -3021,20 +3021,22 @@ _gdk_wayland_device_get_implicit_grab_serial (GdkWaylandDevice *device,
 }
 
 uint32_t
-_gdk_wayland_device_get_last_implicit_grab_serial (GdkWaylandDevice  *device,
-                                                   GdkEventSequence **sequence)
+_gdk_wayland_seat_get_last_implicit_grab_serial (GdkSeat           *seat,
+                                                 GdkEventSequence **sequence)
 {
+  GdkWaylandSeat *wayland_seat;
   GdkWaylandTouchData *touch;
   GHashTableIter iter;
   uint32_t serial = 0;
 
-  g_hash_table_iter_init (&iter, device->device->touches);
+  wayland_seat = GDK_WAYLAND_SEAT (seat);
+  g_hash_table_iter_init (&iter, wayland_seat->touches);
 
   if (sequence)
     *sequence = NULL;
 
-  if (device->device->button_press_serial > serial)
-    serial = device->device->button_press_serial;
+  if (wayland_seat->button_press_serial > serial)
+    serial = wayland_seat->button_press_serial;
 
   while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &touch))
     {
diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h
index 549851c..95ca47e 100644
--- a/gdk/wayland/gdkprivate-wayland.h
+++ b/gdk/wayland/gdkprivate-wayland.h
@@ -184,8 +184,8 @@ void              _gdk_wayland_device_manager_remove_seat (GdkDeviceManager *dev
 GdkKeymap *_gdk_wayland_device_get_keymap (GdkDevice *device);
 uint32_t _gdk_wayland_device_get_implicit_grab_serial(GdkWaylandDevice *device,
                                                       const GdkEvent   *event);
-uint32_t _gdk_wayland_device_get_last_implicit_grab_serial (GdkWaylandDevice  *device,
-                                                            GdkEventSequence **seqence);
+uint32_t _gdk_wayland_seat_get_last_implicit_grab_serial (GdkSeat           *seat,
+                                                          GdkEventSequence **seqence);
 struct wl_data_device * gdk_wayland_device_get_data_device (GdkDevice *gdk_device);
 void gdk_wayland_device_set_selection (GdkDevice             *gdk_device,
                                        struct wl_data_source *source);
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index 87bdc93..aee1165 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -1316,8 +1316,8 @@ gdk_wayland_window_create_xdg_popup (GdkWindow      *window,
   GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
   GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
   GdkWindowImplWayland *parent_impl = GDK_WINDOW_IMPL_WAYLAND (parent->impl);
-  GdkWaylandDevice *device;
   GdkSeat *gdk_seat;
+  guint32 serial;
   int x, y;
   int parent_x, parent_y;
 
@@ -1328,18 +1328,16 @@ gdk_wayland_window_create_xdg_popup (GdkWindow      *window,
     return;
 
   gdk_seat = gdk_display_get_default_seat (GDK_DISPLAY (display));
-  device = GDK_WAYLAND_DEVICE (gdk_seat_get_pointer (gdk_seat));
-
   gdk_wayland_window_get_fake_root_coords (parent, &parent_x, &parent_y);
 
   x = window->x - parent_x;
   y = window->y - parent_y;
+  serial = _gdk_wayland_seat_get_last_implicit_grab_serial (gdk_seat, NULL);
 
   impl->display_server.xdg_popup = xdg_shell_get_xdg_popup (display->xdg_shell,
                                              impl->display_server.wl_surface,
                                              parent_impl->display_server.wl_surface,
-                                             seat,
-                                             _gdk_wayland_device_get_last_implicit_grab_serial (device, 
NULL),
+                                             seat, serial,
                                              x, y);
 
   xdg_popup_add_listener (impl->display_server.xdg_popup, &xdg_popup_listener, window);
@@ -2455,8 +2453,8 @@ gdk_wayland_window_begin_resize_drag (GdkWindow     *window,
   if (!impl->display_server.xdg_surface)
     return;
 
-  serial = _gdk_wayland_device_get_last_implicit_grab_serial (GDK_WAYLAND_DEVICE (device),
-                                                              &sequence);
+  serial = _gdk_wayland_seat_get_last_implicit_grab_serial (gdk_device_get_seat (device),
+                                                            &sequence);
 
   xdg_surface_resize (impl->display_server.xdg_surface,
                       gdk_wayland_device_get_wl_seat (device),
@@ -2492,8 +2490,8 @@ gdk_wayland_window_begin_move_drag (GdkWindow *window,
   if (!impl->display_server.xdg_surface)
     return;
 
-  serial = _gdk_wayland_device_get_last_implicit_grab_serial (GDK_WAYLAND_DEVICE (device),
-                                                              &sequence);
+  serial = _gdk_wayland_seat_get_last_implicit_grab_serial (gdk_device_get_seat (device),
+                                                            &sequence);
   xdg_surface_move (impl->display_server.xdg_surface,
                     gdk_wayland_device_get_wl_seat (device),
                     serial);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]