diff --git a/src/bin/colors.c b/src/bin/colors.c index 03312cdd..79004a19 100644 --- a/src/bin/colors.c +++ b/src/bin/colors.c @@ -761,7 +761,39 @@ color_scheme_list(void) ERR("failed to open '%s'", path_app); goto end; } + ef_user = eet_open(path_user, EET_FILE_MODE_READ); + if (ef_user) + { + it = eet_list_entries(ef_user); + if (!it) + { + ERR("failed to list entries in '%s'", path_user); + goto end; + } + EINA_ITERATOR_FOREACH(it, entry) + { + cs_user = eet_data_read(ef_user, edd_cs, entry->name); + if (!cs_user) + { + ERR("failed to load color scheme '%s' from '%s'", + entry->name, path_user); + continue; + } + cs_app = eet_data_read(ef_app, edd_cs, entry->name); + if (cs_app) + { + /* Prefer user file */ + if (cs_user->md.version >= cs_app->md.version) + l = eina_list_sorted_insert(l, color_scheme_cmp, cs_user); + else + free(cs_user); + free(cs_app); + } + else + l = eina_list_sorted_insert(l, color_scheme_cmp, cs_user); + } + } it = eet_list_entries(ef_app); if (!it) @@ -781,22 +813,15 @@ color_scheme_list(void) cs_user = eet_data_read(ef_user, edd_cs, entry->name); if (cs_user) { - /* Prefer user file */ - if (cs_user->md.version >= cs_app->md.version) - { - l = eina_list_sorted_insert(l, color_scheme_cmp, cs_user); - free(cs_app); - } + /* Prefer user file if higher version */ + if (cs_user->md.version < cs_app->md.version) + l = eina_list_sorted_insert(l, color_scheme_cmp, cs_app); else - { - l = eina_list_sorted_insert(l, color_scheme_cmp, cs_app); - free(cs_user); - } + free(cs_app); + free(cs_user); } else - { - l = eina_list_sorted_insert(l, color_scheme_cmp, cs_app); - } + l = eina_list_sorted_insert(l, color_scheme_cmp, cs_app); } end: eina_iterator_free(it);