wayland: Update cursor surface scale when output scale changes

Also update the cursor surfaces of every seat when an output changes
scale. This could for example happen when a monitor scale is changed via
Settings.
This commit is contained in:
Jonas Ådahl 2018-06-28 12:44:22 +02:00
parent cbbb7604b6
commit dfd1372a9b
3 changed files with 20 additions and 0 deletions

View File

@ -4516,6 +4516,12 @@ pointer_surface_update_scale (GdkDevice *device)
gdk_wayland_device_update_surface_cursor (device);
}
void
gdk_wayland_seat_update_cursor_scale (GdkWaylandSeat *seat)
{
pointer_surface_update_scale (seat->master_pointer);
}
static void
pointer_surface_enter (void *data,
struct wl_surface *wl_surface,

View File

@ -38,6 +38,7 @@
#include "gdkdisplay.h"
#include "gdkdisplay-wayland.h"
#include "gdkmonitor-wayland.h"
#include "gdkseat-wayland.h"
#include "gdkinternals.h"
#include "gdkdeviceprivate.h"
#include "gdkkeysprivate.h"
@ -1871,9 +1872,20 @@ transform_to_string (int transform)
static void
update_scale (GdkDisplay *display)
{
GList *seats;
GList *l;
g_list_foreach (gdk_wayland_display_get_toplevel_surfaces (display),
(GFunc)gdk_wayland_surface_update_scale,
NULL);
seats = gdk_display_list_seats (display);
for (l = seats; l; l = l->next)
{
GdkSeat *seat = l->data;
gdk_wayland_seat_update_cursor_scale (GDK_WAYLAND_SEAT (seat));
}
g_list_free (seats);
}
static void

View File

@ -41,4 +41,6 @@ struct _GdkWaylandSeatClass
GType gdk_wayland_seat_get_type (void) G_GNUC_CONST;
void gdk_wayland_seat_update_cursor_scale (GdkWaylandSeat *seat);
#endif /* __GDK_WAYLAND_SEAT_H__ */