--- xfconf-4.6.1.orig/xfconfd/xfconf-backend-perchannel-xml.c +++ xfconf-4.6.1/xfconfd/xfconf-backend-perchannel-xml.c @@ -1643,8 +1643,8 @@ GError **error) { XfconfChannel *channel = NULL; - gchar *filename_stem, **filenames, *user_file; - gint i; + gchar *filename_stem, *tmp_filename, **filenames, *user_file; + gint i, size; XfconfProperty *prop; TRACE("entering"); @@ -1655,6 +1655,14 @@ filename_stem, FALSE); g_free(filename_stem); + /* reverse array, to respect xdg base dirs' priority when merging */ + for(size = 0; filenames[size]; ++size); + for(i = 0; (filenames[i]) && (i < size/2); ++i) { + tmp_filename = filenames[i]; + filenames[i] = filenames[size - 1 - i]; + filenames[size - 1 - i] = tmp_filename; + } + if((!filenames || !filenames[0]) && !user_file) { if(error) { g_set_error(error, XFCONF_ERROR,