[gnome-sdk-images/gnome-3-24] Better theme handling for gtk2
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-sdk-images/gnome-3-24] Better theme handling for gtk2
- Date: Mon, 22 Jan 2018 13:23:33 +0000 (UTC)
commit 948dc857158c4b24d8a8d0d50e5cf9927e16a511
Author: Alexander Larsson <alexl redhat com>
Date: Mon Jan 22 14:21:23 2018 +0100
Better theme handling for gtk2
This updates gtk to latest version and add the high-contrast enging
from gtk2-engines. It also adds a patch to gtk2 that makes it ignore
xsettings for gtk themes that are not in the sandbox, falling back
to "Adwaita" or "Adwaita-dark".
Fixes https://github.com/flatpak/flatpak/issues/1322
gtk2-use-adwaita-theme.patch | 80 ++++++++++++++++++++++++++++++++++++++++++
org.gnome.Sdk.json.in | 23 +++++++++++-
2 files changed, 101 insertions(+), 2 deletions(-)
---
diff --git a/gtk2-use-adwaita-theme.patch b/gtk2-use-adwaita-theme.patch
new file mode 100644
index 0000000..916b349
--- /dev/null
+++ b/gtk2-use-adwaita-theme.patch
@@ -0,0 +1,80 @@
+diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c
+index 186a8f5cb2..f5c39b5afe 100644
+--- a/gdk/x11/gdkevents-x11.c
++++ b/gdk/x11/gdkevents-x11.c
+@@ -3000,6 +3000,50 @@ check_transform (const gchar *xsettings_name,
+ return TRUE;
+ }
+
++static gchar *
++gtk_rc_get_theme_dir (void)
++{
++ const gchar *var;
++ gchar *path;
++
++ var = g_getenv ("GTK_DATA_PREFIX");
++
++ if (var)
++ path = g_build_filename (var, "share", "themes", NULL);
++ else
++ path = g_build_filename ("/usr", "share", "themes", NULL);
++
++ return path;
++}
++
++static gboolean
++theme_name_valid (XSettingsSetting *setting)
++{
++ gboolean res = FALSE;
++
++ if (setting->type == XSETTINGS_TYPE_STRING)
++ {
++ char *theme_name = setting->data.v_string;
++ gchar *theme_dir = gtk_rc_get_theme_dir ();
++ gchar *path = g_build_filename (theme_dir, theme_name, "gtk-2.0", "gtkrc", NULL);
++
++ if (g_file_test (path, G_FILE_TEST_EXISTS))
++ res = TRUE;
++ else if (g_str_has_suffix (theme_name, "-Dark") ||
++ g_str_has_suffix (theme_name, "-dark"))
++ {
++ setting->data.v_string = g_strdup ("Adwaita-dark");
++ g_free (theme_name);
++ res = TRUE;
++ }
++
++ g_free (theme_dir);
++ g_free (path);
++ }
++
++ return res;
++}
++
+ /**
+ * gdk_screen_get_setting:
+ * @screen: the #GdkScreen where the setting is located
+@@ -3050,6 +3094,11 @@ gdk_screen_get_setting (GdkScreen *screen,
+ if (result != XSETTINGS_SUCCESS)
+ goto out;
+
++ if (strcmp (name, "gtk-theme-name") == 0 &&
++ (setting->type != XSETTINGS_TYPE_STRING ||
++ !theme_name_valid (setting)))
++ goto out;
++
+ switch (setting->type)
+ {
+ case XSETTINGS_TYPE_INT:
+diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
+index 3fbbf00548..5c0a4b33d2 100644
+--- a/gtk/gtksettings.c
++++ b/gtk/gtksettings.c
+@@ -312,7 +312,7 @@ gtk_settings_class_init (GtkSettingsClass *class)
+ #ifdef G_OS_WIN32
+ "MS-Windows",
+ #else
+- "Raleigh",
++ "Adwaita",
+ #endif
+ GTK_PARAM_READWRITE),
+ NULL);
diff --git a/org.gnome.Sdk.json.in b/org.gnome.Sdk.json.in
index 57da785..c670421 100644
--- a/org.gnome.Sdk.json.in
+++ b/org.gnome.Sdk.json.in
@@ -184,8 +184,27 @@
"sources": [
{
"type": "archive",
- "url": "https://download.gnome.org/sources/gtk+/2.24/gtk+-2.24.31.tar.xz",
- "sha256": "68c1922732c7efc08df4656a5366dcc3afdc8791513400dac276009b40954658"
+ "url": "https://download.gnome.org/sources/gtk+/2.24/gtk+-2.24.32.tar.xz",
+ "sha256": "b6c8a93ddda5eabe3bfee1eb39636c9a03d2a56c7b62828b359bf197943c582e"
+ },
+ {
+ "type": "patch",
+ "path": "gtk2-use-adwaita-theme.patch"
+ }
+ ]
+ },
+ {
+ "name": "gtk2-engines",
+ "cleanup": [ "/share/doc/gtk2-engines", "/usr/share/gtk-engines",
+ "/usr/share/themes", "libclearlooks.so", "libcrux-engine.so", "libglide.so",
+ "libindustrial.so", "libmist.so", "libredmond95.so", "libthinice.so"
+ ],
+ "config-opts": [],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/gtk-engines/2.20/gtk-engines-2.20.2.tar.bz2",
+ "sha256": "15b680abca6c773ecb85253521fa100dd3b8549befeecc7595b10209d62d66b5"
}
]
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]