--- xfconf-4.6.1.orig/xfconfd/xfconf-backend-perchannel-xml.c +++ xfconf-4.6.1/xfconfd/xfconf-backend-perchannel-xml.c @@ -1669,13 +1669,20 @@ prop->name = g_strdup("/"); channel->properties = g_node_new(prop); - /* read in system files */ + /* put back in the correct priority order for merge: + last one = most important */ + GSList *xdg_filenames = NULL; for(i = 0; filenames[i]; ++i) { - if(user_file && !strcmp(filenames[i], user_file)) + xdg_filenames = g_slist_prepend(xdg_filenames, filenames[i]); + } + /* read in system files */ + for(i = 0; g_slist_nth_data(xdg_filenames, i); ++i) { + if(user_file && !strcmp(g_slist_nth_data(xdg_filenames, i), user_file)) continue; - xfconf_backend_perchannel_xml_merge_file(xbpx, filenames[i], TRUE, + xfconf_backend_perchannel_xml_merge_file(xbpx, g_slist_nth_data(xdg_filenames, i), TRUE, channel, NULL); } + g_slist_free(xdg_filenames); if(!channel->locked && user_file) { /* read in user file */