summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <tetromino@gentoo.org>2012-03-15 15:00:27 +0000
committerAlexandre Rostovtsev <tetromino@gentoo.org>2012-03-15 15:00:27 +0000
commit8bf0672cf568fbd41d1b6472a45f05bde4231f9a (patch)
tree4854b92f5a72d75efc997a10ace521fac09df4f9 /x11-libs/gtk+/files/gtk+-3.2.4-fallback-theme.patch
parentAdd missing build dep app-arch/unzip. #407177 (diff)
downloadgentoo-2-8bf0672cf568fbd41d1b6472a45f05bde4231f9a.tar.gz
gentoo-2-8bf0672cf568fbd41d1b6472a45f05bde4231f9a.tar.bz2
gentoo-2-8bf0672cf568fbd41d1b6472a45f05bde4231f9a.zip
For 3.2.4-r1, fall back to the theme in /etc/gtk-3.0/settings.ini if the theme specified by gnome-settings-daemon does not support gtk3 (provides a better gtk3 experience for gnome2 users). Regenerate marshalers code that had been generated with glib-2.31 (fixes g_value_get_schar errors).
(Portage version: 2.2.0_alpha90/cvs/Linux x86_64)
Diffstat (limited to 'x11-libs/gtk+/files/gtk+-3.2.4-fallback-theme.patch')
-rw-r--r--x11-libs/gtk+/files/gtk+-3.2.4-fallback-theme.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/x11-libs/gtk+/files/gtk+-3.2.4-fallback-theme.patch b/x11-libs/gtk+/files/gtk+-3.2.4-fallback-theme.patch
new file mode 100644
index 000000000000..d2ec99db477f
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-3.2.4-fallback-theme.patch
@@ -0,0 +1,81 @@
+From 65ba7fe4ae1ad96f69395fbc585c34fd577e5279 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Wed, 14 Mar 2012 23:08:53 -0400
+Subject: [PATCH] settings: fall back to settings.ini gtk theme if requested
+ theme fails
+
+If a gtk3 application is run in gnome2 and the settings daemon uses
+xsettings to request a gtk2 theme with no gtk3 version (which is the
+case by default), then instead of failing to load any theme, we should
+attempt to fall back to the theme specified in settings.ini files.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=654108
+---
+ gtk/gtksettings.c | 23 +++++++++++++++++++++++
+ 1 files changed, 23 insertions(+), 0 deletions(-)
+
+diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
+index 289006f..561cb56 100644
+--- a/gtk/gtksettings.c
++++ b/gtk/gtksettings.c
+@@ -99,6 +99,7 @@ struct _GtkSettingsPrivate
+ GdkScreen *screen;
+ GtkCssProvider *theme_provider;
+ GtkCssProvider *key_theme_provider;
++ gchar *fallback_gtk_theme_name;
+ };
+
+ typedef enum
+@@ -1420,6 +1421,8 @@ gtk_settings_finalize (GObject *object)
+ if (priv->key_theme_provider)
+ g_object_unref (priv->key_theme_provider);
+
++ g_free (priv->fallback_gtk_theme_name);
++
+ G_OBJECT_CLASS (gtk_settings_parent_class)->finalize (object);
+ }
+
+@@ -1769,6 +1772,12 @@ apply_queued_setting (GtkSettings *settings,
+ if (pspec->param_id == PROP_COLOR_SCHEME)
+ merge_color_scheme (settings, &tmp_value, qvalue->source);
+
++ if (!g_strcmp0 (pspec->name, "gtk-theme-name") && qvalue->source == GTK_SETTINGS_SOURCE_DEFAULT)
++ {
++ g_free (priv->fallback_gtk_theme_name);
++ priv->fallback_gtk_theme_name = g_value_dup_string (&tmp_value);
++ }
++
+ if (priv->property_values[pspec->param_id - 1].source <= qvalue->source)
+ {
+ g_value_copy (&tmp_value, &priv->property_values[pspec->param_id - 1].value);
+@@ -2474,6 +2483,10 @@ _gtk_settings_reset_rc_values (GtkSettings *settings)
+ }
+ i++;
+ }
++
++ g_free (priv->fallback_gtk_theme_name);
++ priv->fallback_gtk_theme_name = NULL;
++
+ g_object_thaw_notify (G_OBJECT (settings));
+ g_free (pspecs);
+ }
+@@ -2759,6 +2772,16 @@ settings_update_theme (GtkSettings *settings)
+
+ if (!provider)
+ provider = gtk_css_provider_get_named (theme_name, NULL);
++
++ /* If we failed, fall back to the theme from settings.ini */
++ if (!provider && priv->fallback_gtk_theme_name && *priv->fallback_gtk_theme_name
++ && g_strcmp0 (theme_name, priv->fallback_gtk_theme_name))
++ {
++ provider = gtk_css_provider_get_named (priv->fallback_gtk_theme_name, NULL);
++
++ if (!provider)
++ provider = gtk_css_provider_get_named (priv->fallback_gtk_theme_name, NULL);
++ }
+ }
+
+ settings_update_provider (priv->screen, &priv->theme_provider, provider);
+--
+1.7.8.5
+