[gtk+/wip/683896: 3/4] cssprovider: Move fallback code into _gtk_css_provider_load_named()
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/683896: 3/4] cssprovider: Move fallback code into _gtk_css_provider_load_named()
- Date: Wed, 19 Sep 2012 14:51:15 +0000 (UTC)
commit 27e82920ebb59f4bb1b6244db6f32ce8278ad523
Author: Benjamin Otte <otte redhat com>
Date: Wed Sep 19 16:30:27 2012 +0200
cssprovider: Move fallback code into _gtk_css_provider_load_named()
This makes sure the full theme loading logic resides in one function and
isn't scattered around.
As a side-effect, the hash table kept by gtk_css_provider_get_named()
will now be populated with fallback themes. This will not be a problem
after the next commit though.
gtk/gtkcssprovider.c | 16 ++++++++++++++++
gtk/gtksettings.c | 15 +++++----------
2 files changed, 21 insertions(+), 10 deletions(-)
---
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index 0c418f8..a15d88e 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -2834,6 +2834,22 @@ _gtk_css_provider_load_named (GtkCssProvider *provider,
g_free (path);
g_free (dir);
}
+ else
+ {
+ /* Things failed! Fall back! Fall back! */
+
+ if (variant)
+ {
+ /* If there was a variant, try without */
+ _gtk_css_provider_load_named (provider, name, NULL);
+ }
+ else
+ {
+ /* Worst case, fall back to Raleigh */
+ g_return_if_fail (!g_str_equal (name, "Raleigh")); /* infloop protection */
+ _gtk_css_provider_load_named (provider, "Raleigh", NULL);
+ }
+ }
}
/**
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index 5939e88..9a25317 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -2924,18 +2924,13 @@ settings_update_theme (GtkSettings *settings)
"gtk-application-prefer-dark-theme", &prefer_dark_theme,
NULL);
- if (theme_name && *theme_name)
+ if (!theme_name || !*theme_name)
{
- if (prefer_dark_theme)
- provider = gtk_css_provider_get_named (theme_name, "dark");
-
- if (!provider)
- provider = gtk_css_provider_get_named (theme_name, NULL);
+ g_free (theme_name);
+ theme_name = g_strdup ("Raleigh");
}
-
- /* If we didn't find the named theme, fall back */
- if (!provider)
- provider = gtk_css_provider_get_named ("Raleigh", NULL);
+
+ provider = gtk_css_provider_get_named (theme_name, prefer_dark_theme ? "dark" : NULL);
settings_update_provider (priv->screen, &priv->theme_provider, provider);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]