From 1e31befc1aa65cae82df5b6b690ac8a433da44b1 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 28 Jun 2013 13:23:45 +0200 Subject: [PATCH] x11: Add Gdk/UnscaledDPI to override Xft/DPI This lets use use a scaled Xft/DPI for old apps while not blowing up the size of scaled windows. Only apps supporting Gdk/WindowScaleFactor should supprt Gdk/UnscaledDPI. --- gdk/x11/gdksettings.c | 3 ++- gdk/x11/xsettings-client.c | 13 +++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/gdk/x11/gdksettings.c b/gdk/x11/gdksettings.c index b49f2d287d..320457f3f5 100644 --- a/gdk/x11/gdksettings.c +++ b/gdk/x11/gdksettings.c @@ -66,7 +66,8 @@ static const struct { /* These are here in order to be recognized, but are not sent to gtk as they are handled internally by gdk: */ - {"Gdk/WindowScalingFactor", "gdk-window-scaling-factor"} + {"Gdk/WindowScalingFactor", "gdk-window-scaling-factor"}, + {"Gdk/UnscaledDPI", "gdk-unscaled-dpi"} }; static const char * diff --git a/gdk/x11/xsettings-client.c b/gdk/x11/xsettings-client.c index 4cafb9339e..475cbab8a4 100644 --- a/gdk/x11/xsettings-client.c +++ b/gdk/x11/xsettings-client.c @@ -410,6 +410,7 @@ read_settings (GdkX11Screen *x11_screen, GHashTable *old_list = x11_screen->xsettings; GValue value = G_VALUE_INIT; + GValue *setting, *copy; x11_screen->xsettings = NULL; @@ -443,6 +444,18 @@ read_settings (GdkX11Screen *x11_screen, } } + /* Since we support scaling we look at the specific Gdk/UnscaledDPI + setting if it exists and use that instead of Xft/DPI if it is set */ + setting = g_hash_table_lookup (x11_screen->xsettings, "gdk-unscaled-dpi"); + if (setting) + { + copy = g_new0 (GValue, 1); + g_value_init (copy, G_VALUE_TYPE (setting)); + g_value_copy (setting, copy); + g_hash_table_insert (x11_screen->xsettings, + "gtk-xft-dpi", copy); + } + if (do_notify) notify_changes (x11_screen, old_list); if (old_list)