[gtk/wip/chergert/gdk-macos-for-master] inspector: handle differences in DPI between backends




commit 37a8c138f9d3702cfb57ad3e543ee80542994773
Author: Christian Hergert <chergert redhat com>
Date:   Tue Nov 17 10:45:25 2020 -0800

    inspector: handle differences in DPI between backends
    
    This fixes an issue on macOS where the text gets much larger once opening
    the inspector.

 gtk/inspector/visual.c | 46 ++++++++++++++++++++++------------------------
 1 file changed, 22 insertions(+), 24 deletions(-)
---
diff --git a/gtk/inspector/visual.c b/gtk/inspector/visual.c
index fd082112e2..f3cb4695ac 100644
--- a/gtk/inspector/visual.c
+++ b/gtk/inspector/visual.c
@@ -52,6 +52,9 @@
 #ifdef GDK_WINDOWING_WAYLAND
 #include "wayland/gdkwayland.h"
 #endif
+#ifdef GDK_WINDOWING_MACOS
+#include "macos/gdkmacos.h"
+#endif
 
 #include "gdk/gdk-private.h"
 
@@ -173,34 +176,27 @@ redraw_everything (void)
 }
 
 static double
-get_font_scale (GtkInspectorVisual *vis)
+get_dpi_ratio (GtkInspectorVisual *vis)
 {
-#ifdef GDK_WINDOWING_X11
-  if (GDK_IS_X11_DISPLAY (vis->display))
-    {
-      int dpi_int;
-
-      g_object_get (gtk_settings_get_for_display (vis->display),
-                    "gtk-xft-dpi", &dpi_int,
-                    NULL);
-
-      return dpi_int / (96.0 * 1024.0);
-    }
+#ifdef GDK_WINDOWING_MACOS
+  if (GDK_IS_MACOS_DISPLAY (vis->display))
+    return 72.0 * 1024.0;
 #endif
-#ifdef GDK_WINDOWING_WAYLAND
-  if (GDK_IS_WAYLAND_DISPLAY (vis->display))
-    {
-      int dpi_int;
 
-      g_object_get (gtk_settings_get_for_display (vis->display),
-                    "gtk-xft-dpi", &dpi_int,
-                    NULL);
+  return 96.0 * 1024.0;
+}
 
-      return dpi_int / (96.0 * 1024.0);
-    }
-#endif
+static double
+get_font_scale (GtkInspectorVisual *vis)
+{
+  double ratio = get_dpi_ratio (vis);
+  int dpi_int;
+
+  g_object_get (gtk_settings_get_for_display (vis->display),
+                "gtk-xft-dpi", &dpi_int,
+                NULL);
 
-  return 1.0;
+  return dpi_int / ratio;
 }
 
 static void
@@ -209,8 +205,10 @@ update_font_scale (GtkInspectorVisual *vis,
                    gboolean            update_adjustment,
                    gboolean            update_entry)
 {
+  double ratio = get_dpi_ratio (vis);
+
   g_object_set (gtk_settings_get_for_display (vis->display),
-                "gtk-xft-dpi", (int)(factor * 96 * 1024),
+                "gtk-xft-dpi", (int)(factor * ratio),
                 NULL);
 
   if (update_adjustment)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]