summaryrefslogtreecommitdiff
path: root/gtk/gtksettings.c
diff options
context:
space:
mode:
authorJasper St. Pierre <jstpierre@mecheye.net>2013-11-01 16:03:56 -0400
committerJasper St. Pierre <jstpierre@mecheye.net>2013-11-01 16:04:02 -0400
commit1e70ad1cd126942b38e83c2d01712e8dc7ca675e (patch)
tree346b64f910e721958ce85f5c4848fcfde9968df7 /gtk/gtksettings.c
parent08053cbbb86c9ded2bddee843e502ae5146997f1 (diff)
downloadgtk+-1e70ad1cd126942b38e83c2d01712e8dc7ca675e.tar.gz
gtksettings: Allow setting the GTK+ theme with an envvar
To test with Raleigh much easier.
Diffstat (limited to 'gtk/gtksettings.c')
-rw-r--r--gtk/gtksettings.c56
1 files changed, 34 insertions, 22 deletions
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index 140d15bc90..e61a4b7be5 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -2881,45 +2881,57 @@ settings_update_provider (GdkScreen *screen,
}
}
+static char *
+get_theme_name (GtkSettings *settings)
+{
+ char *theme_name = NULL;
+
+ if (g_getenv ("GTK_THEME"))
+ theme_name = g_strdup (g_getenv ("GTK_THEME"));
+
+ if (theme_name && *theme_name)
+ return theme_name;
+
+ g_free (theme_name);
+ g_object_get (settings,
+ "gtk-theme-name", &theme_name,
+ NULL);
+
+ if (theme_name && *theme_name)
+ return theme_name;
+
+ g_free (theme_name);
+ return g_strdup ("Raleigh");
+}
+
static void
settings_update_theme (GtkSettings *settings)
{
GtkSettingsPrivate *priv = settings->priv;
gboolean prefer_dark_theme;
gchar *theme_name;
+ gchar *theme_dir;
+ gchar *path;
g_object_get (settings,
- "gtk-theme-name", &theme_name,
"gtk-application-prefer-dark-theme", &prefer_dark_theme,
NULL);
- if (!theme_name || !*theme_name)
- {
- g_free (theme_name);
- theme_name = g_strdup ("Raleigh");
- }
-
+ theme_name = get_theme_name (settings);
+
_gtk_css_provider_load_named (priv->theme_provider,
theme_name,
prefer_dark_theme ? "dark" : NULL);
- if (theme_name && *theme_name)
- {
- gchar *theme_dir;
- gchar *path;
-
- /* reload per-theme settings */
- theme_dir = _gtk_css_provider_get_theme_dir ();
- path = g_build_filename (theme_dir, theme_name, "gtk-3.0", "settings.ini", NULL);
-
- if (g_file_test (path, G_FILE_TEST_EXISTS))
- gtk_settings_load_from_key_file (settings, path, GTK_SETTINGS_SOURCE_THEME);
+ /* reload per-theme settings */
+ theme_dir = _gtk_css_provider_get_theme_dir ();
+ path = g_build_filename (theme_dir, theme_name, "gtk-3.0", "settings.ini", NULL);
- g_free (theme_dir);
- g_free (path);
- }
+ if (g_file_test (path, G_FILE_TEST_EXISTS))
+ gtk_settings_load_from_key_file (settings, path, GTK_SETTINGS_SOURCE_THEME);
- g_free (theme_name);
+ g_free (theme_dir);
+ g_free (path);
}
static void