From 050f3372c07bdf56352b8b4bf44437d375f3af28 Mon Sep 17 00:00:00 2001 From: raster Date: Thu, 19 Mar 2009 04:29:31 +0000 Subject: [PATCH] and somewhere.. someone broke system settings and efreet hashes of categories! git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/efreet@39570 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/efreet_utils.c | 65 +++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/src/lib/efreet_utils.c b/src/lib/efreet_utils.c index a701764..364d1fc 100644 --- a/src/lib/efreet_utils.c +++ b/src/lib/efreet_utils.c @@ -497,17 +497,17 @@ _hash_keys(Eina_Hash *hash __UNUSED__, const void *key, void *fdata) EAPI Eina_List * efreet_util_desktop_categories_list(void) { - Eina_Iterator *it; - Eina_List *list = NULL; - - it = eina_hash_iterator_key_new(desktops_by_category); - if (it) - { + Eina_Iterator *it; + Eina_List *list = NULL; + + it = eina_hash_iterator_key_new(desktops_by_category); + if (it) + { eina_iterator_foreach(it, EINA_EACH(_hash_keys), &list); - eina_iterator_free(it); - } - - return list; + eina_iterator_free(it); + } + + return list; } /** @@ -1144,41 +1144,46 @@ efreet_util_menus_find_helper(Eina_List *menus, const char *config_dir) static void efreet_util_desktops_by_category_add(Efreet_Desktop *desktop) { - Eina_List *l; - const char *category; - - if (!desktop->categories) return; - - EINA_LIST_FOREACH(desktop->categories, l, category) - { + Eina_List *l; + const char *category; + + if (!desktop->categories) return; + + EINA_LIST_FOREACH(desktop->categories, l, category) + { Eina_List *list; + int newlist = 0; list = eina_hash_find(desktops_by_category, category); + if (!list) newlist = 1; if (!eina_list_data_find(list, desktop)) - list = eina_list_append(list, desktop); - eina_hash_modify(desktops_by_category, category, list); - } + list = eina_list_append(list, desktop); + if (newlist) + eina_hash_add(desktops_by_category, category, list); + else + eina_hash_modify(desktops_by_category, category, list); + } } static void efreet_util_desktops_by_category_remove(Efreet_Desktop *desktop) { - Eina_List *l; - const char *category; - - if (!desktop->categories) return; - - EINA_LIST_FOREACH(desktop->categories, l, category) - { + Eina_List *l; + const char *category; + + if (!desktop->categories) return; + + EINA_LIST_FOREACH(desktop->categories, l, category) + { Eina_List *list; list = eina_hash_find(desktops_by_category, category); if (!list) continue; if (eina_list_data_find(list, desktop)) - list = eina_list_remove(list, desktop); + list = eina_list_remove(list, desktop); if (!list) eina_hash_del(desktops_by_category, category, list); else - eina_hash_modify(desktops_by_category, category, list); - } + eina_hash_modify(desktops_by_category, category, list); + } } static void -- 2.7.4