summaryrefslogtreecommitdiff
path: root/src/ui/theme-parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/theme-parser.c')
-rw-r--r--src/ui/theme-parser.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/ui/theme-parser.c b/src/ui/theme-parser.c
index 91b565db..b7d22381 100644
--- a/src/ui/theme-parser.c
+++ b/src/ui/theme-parser.c
@@ -4101,7 +4101,8 @@ meta_theme_load (const char *theme_name,
/* We try all supported major versions from current to oldest */
for (version = THEME_VERSION; (version > 0); version--)
{
- /* We try first in home dir, XDG_DATA_DIRS, then system dir for themes */
+ /* We try first in home dir, XDG_USER_DATA_DIR, XDG_DATA_DIRS,
+ * then system dir for themes */
/* Try home dir for themes */
theme_dir = g_build_filename (g_get_home_dir (),
@@ -4115,6 +4116,19 @@ meta_theme_load (const char *theme_name,
if (!keep_trying (&error))
goto out;
+ /* Try XDG_USER_DATA_DIR second */
+ theme_dir = g_build_filename (g_get_user_data_dir(),
+ "themes",
+ theme_name,
+ THEME_SUBDIR,
+ NULL);
+
+ retval = load_theme (theme_dir, theme_name, version, &error);
+ g_free (theme_dir);
+
+ if (!keep_trying (&error))
+ goto out;
+
/* Try each XDG_DATA_DIRS for theme */
xdg_data_dirs = g_get_system_data_dirs();
for(i = 0; xdg_data_dirs[i] != NULL; i++)