[gnome-sdk-images/gnome-3-26] Better theme handling for gtk2



commit df3ef7ff269b1021f64f5b153632b63095aeea4d
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 d5f06ce..4af45ac 100644
--- a/org.gnome.Sdk.json.in
+++ b/org.gnome.Sdk.json.in
@@ -274,8 +274,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]