wayland: Add internal gdk_wayland_seat_set_global_cursor()
This can be used for cases (like DnD) where there isn't necessarily a grab, but we want a global pointer cursor.
This commit is contained in:
@ -306,7 +306,7 @@ gdk_wayland_device_set_window_cursor (GdkDevice *device,
|
|||||||
if (device == wd->touch_master)
|
if (device == wd->touch_master)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (wd->pointer_grab_window)
|
if (wd->grab_cursor)
|
||||||
cursor = wd->grab_cursor;
|
cursor = wd->grab_cursor;
|
||||||
|
|
||||||
/* Setting the cursor to NULL means that we should use
|
/* Setting the cursor to NULL means that we should use
|
||||||
@ -2685,7 +2685,7 @@ gdk_wayland_seat_grab (GdkSeat *seat,
|
|||||||
evtime,
|
evtime,
|
||||||
FALSE);
|
FALSE);
|
||||||
|
|
||||||
g_set_object (&wayland_seat->grab_cursor, cursor);
|
gdk_wayland_seat_set_global_cursor (seat, cursor);
|
||||||
g_set_object (&wayland_seat->cursor, cursor);
|
g_set_object (&wayland_seat->cursor, cursor);
|
||||||
gdk_wayland_device_update_window_cursor (wayland_seat);
|
gdk_wayland_device_update_window_cursor (wayland_seat);
|
||||||
}
|
}
|
||||||
@ -3066,6 +3066,21 @@ gdk_wayland_device_unset_touch_grab (GdkDevice *gdk_device,
|
|||||||
_gdk_wayland_display_deliver_event (device->display, event);
|
_gdk_wayland_display_deliver_event (device->display, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gdk_wayland_seat_set_global_cursor (GdkSeat *seat,
|
||||||
|
GdkCursor *cursor)
|
||||||
|
{
|
||||||
|
GdkWaylandSeat *wayland_seat = GDK_WAYLAND_SEAT (seat);
|
||||||
|
GdkDevice *pointer;
|
||||||
|
|
||||||
|
pointer = gdk_seat_get_pointer (seat);
|
||||||
|
|
||||||
|
g_set_object (&wayland_seat->grab_cursor, cursor);
|
||||||
|
gdk_wayland_device_set_window_cursor (pointer,
|
||||||
|
gdk_wayland_device_get_focus (pointer),
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
struct wl_data_device *
|
struct wl_data_device *
|
||||||
gdk_wayland_device_get_data_device (GdkDevice *gdk_device)
|
gdk_wayland_device_get_data_device (GdkDevice *gdk_device)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -264,4 +264,7 @@ EGLSurface gdk_wayland_window_get_egl_surface (GdkWindow *window,
|
|||||||
EGLSurface gdk_wayland_window_get_dummy_egl_surface (GdkWindow *window,
|
EGLSurface gdk_wayland_window_get_dummy_egl_surface (GdkWindow *window,
|
||||||
EGLConfig config);
|
EGLConfig config);
|
||||||
|
|
||||||
|
void gdk_wayland_seat_set_global_cursor (GdkSeat *seat,
|
||||||
|
GdkCursor *cursor);
|
||||||
|
|
||||||
#endif /* __GDK_PRIVATE_WAYLAND_H__ */
|
#endif /* __GDK_PRIVATE_WAYLAND_H__ */
|
||||||
|
|||||||
Reference in New Issue
Block a user