mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-28 06:21:14 +00:00
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:
parent
787e1d7113
commit
f9f5586714
@ -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))
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user