summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-02-23 20:32:31 +0100
committerCarlos Garnacho <carlosg@gnome.org>2016-02-26 19:59:17 +0100
commitf9f558671421762e4799e077eab3c64b8b873cfe (patch)
treeb7482e3660f7fb53b5096a6734a35a9fe8a85a17
parent787e1d71133089668f0ef8ec19b4d50eb1d89e4e (diff)
downloadgtk+-f9f558671421762e4799e077eab3c64b8b873cfe.tar.gz
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
-rw-r--r--gdk/wayland/gdkdevice-wayland.c12
-rw-r--r--gdk/wayland/gdkprivate-wayland.h4
-rw-r--r--gdk/wayland/gdkwindow-wayland.c16
3 files changed, 16 insertions, 16 deletions
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index b8f92fef68..f95b65ab60 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 549851c82c..95ca47e95c 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 87bdc934ae..aee1165039 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);