From f80989332f20249fa020ed738ab943fcccd06957 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 30 Jan 2024 20:08:44 -0500 Subject: [PATCH] inspector: Better monitor information Show the fractional scale if we have one, and pixels. Only Wayland has fractional scales, and for monitors, we have to derive it from the logical and physical resolution of the monitor. Not ideal, but it works. --- gtk/inspector/general.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c index c485dd4388..c5b218c4c9 100644 --- a/gtk/inspector/general.c +++ b/gtk/inspector/general.c @@ -730,7 +730,7 @@ add_monitor (GtkInspectorGeneral *gen, GtkListBox *list; char *value; GdkRectangle rect; - int scale; + double scale; char *name; char *scale_str = NULL; const char *manufacturer; @@ -753,9 +753,9 @@ add_monitor (GtkInspectorGeneral *gen, add_label_row (gen, list, "Connector", gdk_monitor_get_connector (monitor), 10); gdk_monitor_get_geometry (monitor, &rect); - scale = gdk_monitor_get_scale_factor (monitor); - if (scale != 1) - scale_str = g_strdup_printf (" @ %d", scale); + scale = gdk_monitor_get_scale (monitor); + if (scale != 1.0) + scale_str = g_strdup_printf (" @ %.2f", scale); value = g_strdup_printf ("%d × %d%s at %d, %d", rect.width, rect.height, @@ -765,6 +765,12 @@ add_monitor (GtkInspectorGeneral *gen, g_free (value); g_free (scale_str); + value = g_strdup_printf ("%d × %d", + (int) (rect.width * scale), + (int) (rect.height * scale)); + add_label_row (gen, list, "Pixels", value, 10); + g_free (value); + value = g_strdup_printf ("%d × %d mm²", gdk_monitor_get_width_mm (monitor), gdk_monitor_get_height_mm (monitor));