diff --git a/src/bin/e_int_config_modules.c b/src/bin/e_int_config_modules.c index f2235d4c7..dd5bb9aed 100644 --- a/src/bin/e_int_config_modules.c +++ b/src/bin/e_int_config_modules.c @@ -13,7 +13,6 @@ struct _CFModule Evas_Object *end; int idx; Eina_Bool enabled : 1; - Eina_Bool selected : 1; }; struct _CFType @@ -34,7 +33,6 @@ struct _E_Config_Dialog_Data struct { Eina_List *loaded, *unloaded; - Ecore_Idler *idler; } selected; }; @@ -144,7 +142,6 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) eina_list_free(cfdata->selected.loaded); eina_list_free(cfdata->selected.unloaded); - if (cfdata->selected.idler) ecore_idler_del(cfdata->selected.idler); E_FREE(cfdata); } @@ -544,68 +541,47 @@ _types_list_sort(const void *data1, const void *data2) return strcmp(t1->name, t2->name); } -static Eina_Bool -_widget_list_item_selected_postponed(void *data) +static void +_widget_list_selection_changed(void *data, Evas_Object *obj __UNUSED__) { E_Config_Dialog_Data *cfdata = data; const Eina_List *l; const E_Ilist_Item *it; - unsigned int loaded = 0, unloaded = 0; CFModule *cfm = NULL; const char *description; - int idx = 0; - eina_list_free(cfdata->selected.loaded); - eina_list_free(cfdata->selected.unloaded); - cfdata->selected.loaded = NULL; - cfdata->selected.unloaded = NULL; + cfdata->selected.loaded = eina_list_free(cfdata->selected.loaded); + cfdata->selected.unloaded = eina_list_free(cfdata->selected.unloaded); - EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->l_modules), l, it) + EINA_LIST_FOREACH(e_widget_ilist_selected_items_get(cfdata->l_modules), l, it) { - idx++; - if (!it->selected) continue; cfm = e_widget_ilist_item_data_get(it); - cfm->idx = (idx - 1); if (cfm->enabled) { cfdata->selected.loaded = eina_list_append(cfdata->selected.loaded, cfm); - loaded++; + e_widget_disabled_set(cfdata->b_unload, 0); + e_widget_disabled_set(cfdata->b_load, 1); } else { cfdata->selected.unloaded = eina_list_append(cfdata->selected.unloaded, cfm); - unloaded++; + e_widget_disabled_set(cfdata->b_load, 0); + e_widget_disabled_set(cfdata->b_unload, 1); } } + - e_widget_disabled_set(cfdata->b_load, !unloaded); - e_widget_disabled_set(cfdata->b_unload, !loaded); - - if ((cfm) && (loaded + unloaded == 1)) + if ((cfm) && (eina_list_count(cfdata->selected.loaded) + eina_list_count(cfdata->selected.unloaded) == 1)) description = cfm->comment; - else if (loaded + unloaded > 1) + else if (eina_list_count(cfdata->selected.loaded) + eina_list_count(cfdata->selected.unloaded) > 1) description = _("More than one module selected."); else description = _("No modules selected."); e_widget_textblock_markup_set(cfdata->o_desc, description); - - cfdata->selected.idler = NULL; - return ECORE_CALLBACK_CANCEL; -} - -static void -_widget_list_selection_changed(void *data, Evas_Object *obj __UNUSED__) -{ - E_Config_Dialog_Data *cfdata = data; - - if (cfdata->selected.idler) - ecore_idler_del(cfdata->selected.idler); - cfdata->selected.idler = - ecore_idler_add(_widget_list_item_selected_postponed, cfdata); } static void @@ -625,12 +601,12 @@ _btn_cb_unload(void *data, void *data2 __UNUSED__) cfm->enabled = e_module_enabled_get(cfm->module); } - // weird, but unselects it as it was already selected - e_widget_ilist_multi_select(cfdata->l_modules, cfm->idx); _module_end_state_apply(cfm); + cfdata->selected.unloaded = eina_list_append(cfdata->selected.unloaded, cfm); } e_widget_disabled_set(cfdata->b_unload, 1); + e_widget_disabled_set(cfdata->b_load, 0); } static void @@ -652,11 +628,11 @@ _btn_cb_load(void *data, void *data2 __UNUSED__) cfm->enabled = e_module_enabled_get(cfm->module); } - // weird, but unselects it as it was already selected - e_widget_ilist_multi_select(cfdata->l_modules, cfm->idx); _module_end_state_apply(cfm); + cfdata->selected.loaded = eina_list_append(cfdata->selected.loaded, cfm); } e_widget_disabled_set(cfdata->b_load, 1); + e_widget_disabled_set(cfdata->b_unload, 0); }