[gtk/gtk-3-24: 1/2] gdk/wayland: Take transform into account when setting physical size
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gtk-3-24: 1/2] gdk/wayland: Take transform into account when setting physical size
- Date: Wed, 5 May 2021 18:38:37 +0000 (UTC)
commit 8c0b11998d00acf0d7b2b4230763b3a34d8e26f0
Author: Guido Günther <agx sigxcpu org>
Date: Wed May 5 13:59:26 2021 +0200
gdk/wayland: Take transform into account when setting physical size
Width and height of a GdkMonitor are derived via wl_output which
talks about physical dimensions of a device and compositors usually
implement this as the untransformed values (e.g. weston, wlroots).
Since the GTK client has no way to figure out if a monitor was rotated,
transform the physical dimensions according to the applied wayland
transform to have the physical dimensions match the logical ones.
Mutter flips the physical dimensions itself but doesn't announce the
transform so this shouldn't break anything there.
gdk/wayland/gdkscreen-wayland.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
---
diff --git a/gdk/wayland/gdkscreen-wayland.c b/gdk/wayland/gdkscreen-wayland.c
index 6f8b5e8d93..b0abd61b8c 100644
--- a/gdk/wayland/gdkscreen-wayland.c
+++ b/gdk/wayland/gdkscreen-wayland.c
@@ -1638,7 +1638,21 @@ output_handle_geometry (void *data,
monitor->x = x;
monitor->y = y;
- gdk_monitor_set_physical_size (GDK_MONITOR (monitor), physical_width, physical_height);
+
+ switch (transform)
+ {
+ case WL_OUTPUT_TRANSFORM_90:
+ case WL_OUTPUT_TRANSFORM_270:
+ case WL_OUTPUT_TRANSFORM_FLIPPED_90:
+ case WL_OUTPUT_TRANSFORM_FLIPPED_270:
+ gdk_monitor_set_physical_size (GDK_MONITOR (monitor),
+ physical_height, physical_width);
+ break;
+ default:
+ gdk_monitor_set_physical_size (GDK_MONITOR (monitor),
+ physical_width, physical_height);
+ }
+
gdk_monitor_set_subpixel_layout (GDK_MONITOR (monitor), subpixel);
gdk_monitor_set_manufacturer (GDK_MONITOR (monitor), make);
gdk_monitor_set_model (GDK_MONITOR (monitor), model);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]