From 536966e84843916ebd865816f628e712b042da89 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 27 Aug 2020 00:18:09 +0200 Subject: [PATCH 1/2] gdk/wayland: Look for font settings in gsettings-desktop-schemas Prefer this location, but also look for the old location in settings-daemon for backwards compatibility. This applies to both direct settings lookups and via the settings portal. --- gdk/wayland/gdkdisplay-wayland.c | 69 +++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c index 937a3d3b9e..01ef5329ea 100644 --- a/gdk/wayland/gdkdisplay-wayland.c +++ b/gdk/wayland/gdkdisplay-wayland.c @@ -1489,17 +1489,35 @@ update_xft_settings (GdkDisplay *display) { TranslationEntry *entry; - entry = find_translation_entry_by_schema ("org.gnome.settings-daemon.plugins.xsettings", "antialiasing"); + entry = find_translation_entry_by_schema ("org.gnome.desktop.interface", "font-antialiasing"); g_assert (entry); - antialiasing = entry->fallback.i; - entry = find_translation_entry_by_schema ("org.gnome.settings-daemon.plugins.xsettings", "hinting"); - g_assert (entry); - hinting = entry->fallback.i; + if (entry->valid) + { + antialiasing = entry->fallback.i; - entry = find_translation_entry_by_schema ("org.gnome.settings-daemon.plugins.xsettings", "rgba-order"); - g_assert (entry); - order = entry->fallback.i; + entry = find_translation_entry_by_schema ("org.gnome.desktop.interface", "font-hinting"); + g_assert (entry); + hinting = entry->fallback.i; + + entry = find_translation_entry_by_schema ("org.gnome.desktop.interface", "font-rgba-order"); + g_assert (entry); + order = entry->fallback.i; + } + else + { + entry = find_translation_entry_by_schema ("org.gnome.settings-daemon.plugins.xsettings", "antialiasing"); + g_assert (entry); + antialiasing = entry->fallback.i; + + entry = find_translation_entry_by_schema ("org.gnome.settings-daemon.plugins.xsettings", "hinting"); + g_assert (entry); + hinting = entry->fallback.i; + + entry = find_translation_entry_by_schema ("org.gnome.settings-daemon.plugins.xsettings", "rgba-order"); + g_assert (entry); + order = entry->fallback.i; + } entry = find_translation_entry_by_schema ("org.gnome.desktop.interface", "text-scaling-factor"); g_assert (entry); @@ -1507,11 +1525,27 @@ update_xft_settings (GdkDisplay *display) } else { - settings = g_hash_table_lookup (display_wayland->settings, - "org.gnome.settings-daemon.plugins.xsettings"); + GSettingsSchemaSource *source; + GSettingsSchema *schema; - if (settings) + source = g_settings_schema_source_get_default (); + schema = g_settings_schema_source_lookup (source, + "org.gnome.desktop.interface", + FALSE); + + if (schema && g_settings_schema_has_key (schema, "font-antialiasing")) { + settings = g_hash_table_lookup (display_wayland->settings, + "org.gnome.desktop.interface"); + antialiasing = g_settings_get_enum (settings, "font-antialiasing"); + hinting = g_settings_get_enum (settings, "font-hinting"); + order = g_settings_get_enum (settings, "font-rgba-order"); + } + else if (g_hash_table_contains (display_wayland->settings, + "org.gnome.settings-daemon.plugins.xsettings")) + { + settings = g_hash_table_lookup (display_wayland->settings, + "org.gnome.settings-daemon.plugins.xsettings"); antialiasing = g_settings_get_enum (settings, "antialiasing"); hinting = g_settings_get_enum (settings, "hinting"); order = g_settings_get_enum (settings, "rgba-order"); @@ -1635,6 +1669,10 @@ static TranslationEntry translations[] = { { FALSE, "org.gnome.desktop.privacy", "recent-files-max-age", "gtk-recent-files-max-age", G_TYPE_INT, { .i = 30 } }, { FALSE, "org.gnome.desktop.privacy", "remember-recent-files", "gtk-recent-files-enabled", G_TYPE_BOOLEAN, { .b = TRUE } }, { FALSE, "org.gnome.desktop.wm.preferences", "button-layout", "gtk-decoration-layout", G_TYPE_STRING, { .s = "menu:close" } }, + { FALSE, "org.gnome.desktop.interface", "font-antialiasing", "gtk-xft-antialias", G_TYPE_NONE, { .i = 0 } }, + { FALSE, "org.gnome.desktop.interface", "font-hinting", "gtk-xft-hinting", G_TYPE_NONE, { .i = 0 } }, + { FALSE, "org.gnome.desktop.interface", "font-hinting", "gtk-xft-hintstyle", G_TYPE_NONE, { .i = 0 } }, + { FALSE, "org.gnome.desktop.interface", "font-rgba-order", "gtk-xft-rgba", G_TYPE_NONE, { .i = 0 } }, { FALSE, "org.gnome.settings-daemon.plugins.xsettings", "antialiasing", "gtk-xft-antialias", G_TYPE_NONE, { .i = 0 } }, { FALSE, "org.gnome.settings-daemon.plugins.xsettings", "hinting", "gtk-xft-hinting", G_TYPE_NONE, { .i = 0 } }, { FALSE, "org.gnome.settings-daemon.plugins.xsettings", "hinting", "gtk-xft-hintstyle", G_TYPE_NONE, { .i = 0 } }, @@ -1732,11 +1770,14 @@ apply_portal_setting (TranslationEntry *entry, entry->fallback.i = g_variant_get_int32 (value); break; } - if (strcmp (entry->key, "antialiasing") == 0) + if (strcmp (entry->key, "antialiasing") == 0 || + strcmp (entry->key, "font-antialiasing") == 0) entry->fallback.i = get_antialiasing (g_variant_get_string (value, NULL)); - else if (strcmp (entry->key, "hinting") == 0) + else if (strcmp (entry->key, "hinting") == 0 || + strcmp (entry->key, "font-hinting") == 0) entry->fallback.i = get_hinting (g_variant_get_string (value, NULL)); - else if (strcmp (entry->key, "rgba-order") == 0) + else if (strcmp (entry->key, "rgba-order") == 0 || + strcmp (entry->key, "font-rgba-order") == 0) entry->fallback.i = get_order (g_variant_get_string (value, NULL)); else if (strcmp (entry->key, "text-scaling-factor") == 0) entry->fallback.i = (int) (g_variant_get_double (value) * 65536.0); From 6421355065fd3bf4f68f5d8a02b238209cae347f Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 27 Aug 2020 00:27:50 +0200 Subject: [PATCH 2/2] gdk/wayland: Use double-click/drag-threshold settings from g-d-s Handle both these settings, and the older settings-daemon ones for backwards compatibility. The keys are already checked for existence in the schema, so it will just use the existing ones. --- gdk/wayland/gdkdisplay-wayland.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c index 01ef5329ea..9be0bacfad 100644 --- a/gdk/wayland/gdkdisplay-wayland.c +++ b/gdk/wayland/gdkdisplay-wayland.c @@ -1661,6 +1661,8 @@ static TranslationEntry translations[] = { { FALSE, "org.gnome.desktop.interface", "enable-animations", "gtk-enable-animations", G_TYPE_BOOLEAN, { .b = TRUE } }, { FALSE, "org.gnome.desktop.interface", "gtk-enable-primary-paste", "gtk-enable-primary-paste", G_TYPE_BOOLEAN, { .b = TRUE } }, { FALSE, "org.gnome.desktop.interface", "overlay-scrolling", "gtk-overlay-scrolling", G_TYPE_BOOLEAN, { .b = TRUE } }, + { FALSE, "org.gnome.desktop.peripherals.mouse", "double-click", "gtk-double-click-time", G_TYPE_INT, { .i = 400 } }, + { FALSE, "org.gnome.desktop.peripherals.mouse", "drag-threshold", "gtk-dnd-drag-threshold", G_TYPE_INT, {.i = 8 } }, { FALSE, "org.gnome.settings-daemon.peripherals.mouse", "double-click", "gtk-double-click-time", G_TYPE_INT, { .i = 400 } }, { FALSE, "org.gnome.settings-daemon.peripherals.mouse", "drag-threshold", "gtk-dnd-drag-threshold", G_TYPE_INT, {.i = 8 } }, { FALSE, "org.gnome.desktop.sound", "theme-name", "gtk-sound-theme-name", G_TYPE_STRING, { .s = "freedesktop" } },