some tweaks to gadget config dialog to make deletion work better in more cases

SVN revision: 76246
This commit is contained in:
Mike Blumenkrantz 2012-09-06 14:20:52 +00:00
parent 851d0069f7
commit a838447b64
1 changed files with 19 additions and 2 deletions

View File

@ -36,6 +36,7 @@ static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dia
static Evas_Object *_advanced_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); static Evas_Object *_advanced_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static Eina_Bool _cb_load_timer(void *data); static Eina_Bool _cb_load_timer(void *data);
static void _fill_list(E_Config_Dialog_Data *cfdata); static void _fill_list(E_Config_Dialog_Data *cfdata);
static void _fill_list_advanced(E_Config_Dialog_Data *cfdata);
static void _cb_list_selected(void *data); static void _cb_list_selected(void *data);
static void _cb_add(void *data, void *data2 __UNUSED__); static void _cb_add(void *data, void *data2 __UNUSED__);
static void _cb_del(void *data, void *data2 __UNUSED__); static void _cb_del(void *data, void *data2 __UNUSED__);
@ -181,6 +182,11 @@ _list_item_del_advanced(E_Config_Dialog_Data *cfdata, E_Gadcon_Client *gcc)
Eina_List *l; Eina_List *l;
int x = 0; int x = 0;
if (!gcc->cf)
{
_fill_list_advanced(cfdata);
return;
}
EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->advanced.o_list), l, ili) EINA_LIST_FOREACH(e_widget_ilist_items_get(cfdata->advanced.o_list), l, ili)
{ {
if (e_widget_ilist_item_value_get(ili) == gcc->cf->id) if (e_widget_ilist_item_value_get(ili) == gcc->cf->id)
@ -247,6 +253,9 @@ _list_item_add_advanced(E_Config_Dialog_Data *cfdata, E_Gadcon_Client *gcc, E_Co
e_widget_ilist_append_full(cfdata->advanced.o_list, icon, end, cf_gcc->id, e_widget_ilist_append_full(cfdata->advanced.o_list, icon, end, cf_gcc->id,
NULL, cfdata, cf_gcc->id); NULL, cfdata, cf_gcc->id);
if (!e_widget_ilist_count(cfdata->advanced.o_list)) return;
e_widget_disabled_set(cfdata->o_del, 0);
e_widget_ilist_selected_set(cfdata->advanced.o_list, 0);
} }
static void static void
@ -327,8 +336,10 @@ _fill_list_advanced(E_Config_Dialog_Data *cfdata)
e_widget_ilist_thaw(cfdata->advanced.o_list); e_widget_ilist_thaw(cfdata->advanced.o_list);
edje_thaw(); edje_thaw();
evas_event_thaw(evas); evas_event_thaw(evas);
e_widget_ilist_selected_set(cfdata->advanced.o_list, 0); if (e_widget_ilist_count(cfdata->advanced.o_list))
e_widget_disabled_set(cfdata->o_del, 0); e_widget_ilist_selected_set(cfdata->advanced.o_list, 0);
else
e_widget_disabled_set(cfdata->o_del, 1);
/////////////// ///////////////
evas = evas_object_evas_get(cfdata->class_list); evas = evas_object_evas_get(cfdata->class_list);
evas_event_freeze(evas); evas_event_freeze(evas);
@ -556,6 +567,12 @@ _cb_gcc_del(E_Config_Dialog_Data *cfdata, int type __UNUSED__, E_Event_Gadcon_Cl
{ {
if (cfdata->advanced.o_list) if (cfdata->advanced.o_list)
_list_item_del_advanced(cfdata, ev->gcc); _list_item_del_advanced(cfdata, ev->gcc);
else
{
eina_hash_foreach(cfdata->gadget_hash, _free_gadgets, NULL);
_fill_data(cfdata);
_fill_list(cfdata);
}
return ECORE_CALLBACK_PASS_ON; return ECORE_CALLBACK_PASS_ON;
} }