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
This commit is contained in:
Carlos Garnacho 2016-02-23 20:32:31 +01:00
parent 787e1d7113
commit f9f5586714
3 changed files with 16 additions and 16 deletions

View File

@ -3021,20 +3021,22 @@ _gdk_wayland_device_get_implicit_grab_serial (GdkWaylandDevice *device,
} }
uint32_t uint32_t
_gdk_wayland_device_get_last_implicit_grab_serial (GdkWaylandDevice *device, _gdk_wayland_seat_get_last_implicit_grab_serial (GdkSeat *seat,
GdkEventSequence **sequence) GdkEventSequence **sequence)
{ {
GdkWaylandSeat *wayland_seat;
GdkWaylandTouchData *touch; GdkWaylandTouchData *touch;
GHashTableIter iter; GHashTableIter iter;
uint32_t serial = 0; 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) if (sequence)
*sequence = NULL; *sequence = NULL;
if (device->device->button_press_serial > serial) if (wayland_seat->button_press_serial > serial)
serial = device->device->button_press_serial; serial = wayland_seat->button_press_serial;
while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &touch)) while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &touch))
{ {

View File

@ -184,8 +184,8 @@ void _gdk_wayland_device_manager_remove_seat (GdkDeviceManager *dev
GdkKeymap *_gdk_wayland_device_get_keymap (GdkDevice *device); GdkKeymap *_gdk_wayland_device_get_keymap (GdkDevice *device);
uint32_t _gdk_wayland_device_get_implicit_grab_serial(GdkWaylandDevice *device, uint32_t _gdk_wayland_device_get_implicit_grab_serial(GdkWaylandDevice *device,
const GdkEvent *event); const GdkEvent *event);
uint32_t _gdk_wayland_device_get_last_implicit_grab_serial (GdkWaylandDevice *device, uint32_t _gdk_wayland_seat_get_last_implicit_grab_serial (GdkSeat *seat,
GdkEventSequence **seqence); GdkEventSequence **seqence);
struct wl_data_device * gdk_wayland_device_get_data_device (GdkDevice *gdk_device); struct wl_data_device * gdk_wayland_device_get_data_device (GdkDevice *gdk_device);
void gdk_wayland_device_set_selection (GdkDevice *gdk_device, void gdk_wayland_device_set_selection (GdkDevice *gdk_device,
struct wl_data_source *source); struct wl_data_source *source);

View File

@ -1316,8 +1316,8 @@ gdk_wayland_window_create_xdg_popup (GdkWindow *window,
GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)); GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
GdkWindowImplWayland *parent_impl = GDK_WINDOW_IMPL_WAYLAND (parent->impl); GdkWindowImplWayland *parent_impl = GDK_WINDOW_IMPL_WAYLAND (parent->impl);
GdkWaylandDevice *device;
GdkSeat *gdk_seat; GdkSeat *gdk_seat;
guint32 serial;
int x, y; int x, y;
int parent_x, parent_y; int parent_x, parent_y;
@ -1328,18 +1328,16 @@ gdk_wayland_window_create_xdg_popup (GdkWindow *window,
return; return;
gdk_seat = gdk_display_get_default_seat (GDK_DISPLAY (display)); 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); gdk_wayland_window_get_fake_root_coords (parent, &parent_x, &parent_y);
x = window->x - parent_x; x = window->x - parent_x;
y = window->y - parent_y; 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.xdg_popup = xdg_shell_get_xdg_popup (display->xdg_shell,
impl->display_server.wl_surface, impl->display_server.wl_surface,
parent_impl->display_server.wl_surface, parent_impl->display_server.wl_surface,
seat, seat, serial,
_gdk_wayland_device_get_last_implicit_grab_serial (device, NULL),
x, y); x, y);
xdg_popup_add_listener (impl->display_server.xdg_popup, &xdg_popup_listener, window); 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) if (!impl->display_server.xdg_surface)
return; return;
serial = _gdk_wayland_device_get_last_implicit_grab_serial (GDK_WAYLAND_DEVICE (device), serial = _gdk_wayland_seat_get_last_implicit_grab_serial (gdk_device_get_seat (device),
&sequence); &sequence);
xdg_surface_resize (impl->display_server.xdg_surface, xdg_surface_resize (impl->display_server.xdg_surface,
gdk_wayland_device_get_wl_seat (device), 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) if (!impl->display_server.xdg_surface)
return; return;
serial = _gdk_wayland_device_get_last_implicit_grab_serial (GDK_WAYLAND_DEVICE (device), serial = _gdk_wayland_seat_get_last_implicit_grab_serial (gdk_device_get_seat (device),
&sequence); &sequence);
xdg_surface_move (impl->display_server.xdg_surface, xdg_surface_move (impl->display_server.xdg_surface,
gdk_wayland_device_get_wl_seat (device), gdk_wayland_device_get_wl_seat (device),
serial); serial);