[gtk: 1/2] wayland: Update cursor surface scale when output scale changes
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk: 1/2] wayland: Update cursor surface scale when output scale changes
- Date: Fri, 29 Jun 2018 15:09:46 +0000 (UTC)
commit dfd1372a9be2aa8bab778658cca361ead201cf7c
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Thu Jun 28 12:44:22 2018 +0200
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.
gdk/wayland/gdkdevice-wayland.c | 6 ++++++
gdk/wayland/gdkdisplay-wayland.c | 12 ++++++++++++
gdk/wayland/gdkseat-wayland.h | 2 ++
3 files changed, 20 insertions(+)
---
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 9c9b79b563..64ab005aed 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -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,
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index b64f2f105b..c4c710847a 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -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
diff --git a/gdk/wayland/gdkseat-wayland.h b/gdk/wayland/gdkseat-wayland.h
index 52c73e22ee..eccc792817 100644
--- a/gdk/wayland/gdkseat-wayland.h
+++ b/gdk/wayland/gdkseat-wayland.h
@@ -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__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]