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.
This commit is contained in:
Alexander Larsson 2013-06-28 13:23:45 +02:00
parent d89a98e31e
commit 4b9c08f48d
2 changed files with 15 additions and 1 deletions

View File

@ -63,7 +63,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 *

View File

@ -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)