diff --git a/src/bin/e_ilist.c b/src/bin/e_ilist.c index e5ecd973c..8c3b15414 100644 --- a/src/bin/e_ilist.c +++ b/src/bin/e_ilist.c @@ -332,35 +332,6 @@ e_ilist_remove_num(Evas_Object *obj, int n) E_FREE(si); } -EAPI void -e_ilist_remove_label(Evas_Object *obj, const char *label) -{ - Evas_List *l; - - API_ENTRY return; - if (!sd->items) return; - if (!label) return; - for (l = sd->items; l; l = l->next) - { - E_Ilist_Item *si; - char *t; - - si = l->data; - if (!si) continue; - t = strdup(edje_object_part_text_get(si->o_base, "e.text.label")); - if (!strcmp(t, label)) - { - if (si->o_icon) evas_object_del(si->o_icon); - evas_object_del(si->o_base); - sd->items = evas_list_remove(sd->items, si); - E_FREE(si); - free(t); - break; - } - free(t); - } -} - EAPI const char * e_ilist_nth_label_get(Evas_Object *obj, int n) { diff --git a/src/bin/e_ilist.h b/src/bin/e_ilist.h index 8b3fff50f..d914c3b70 100644 --- a/src/bin/e_ilist.h +++ b/src/bin/e_ilist.h @@ -39,7 +39,6 @@ EAPI void *e_ilist_selected_data2_get (Evas_Object *obj); EAPI Evas_Object *e_ilist_selected_icon_get (Evas_Object *obj); EAPI void e_ilist_selected_geometry_get (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); EAPI void e_ilist_remove_num (Evas_Object *obj, int n); -EAPI void e_ilist_remove_label (Evas_Object *obj, const char *label); EAPI const char *e_ilist_nth_label_get (Evas_Object *obj, int n); EAPI void e_ilist_nth_label_set (Evas_Object *obj, int n, const char *label); EAPI Evas_Object *e_ilist_nth_icon_get (Evas_Object *obj, int n); diff --git a/src/bin/e_widget_ilist.c b/src/bin/e_widget_ilist.c index 759e82243..4f55a4bf1 100644 --- a/src/bin/e_widget_ilist.c +++ b/src/bin/e_widget_ilist.c @@ -103,8 +103,12 @@ EAPI void e_widget_ilist_header_append(Evas_Object *obj, Evas_Object *icon, const char *label) { E_Widget_Data *wd; + E_Widget_Callback *wcb; wd = e_widget_data_get(obj); + wcb = E_NEW(E_Widget_Callback, 1); + if (!wcb) return; + wd->callbacks = evas_list_append(wd->callbacks, wcb); e_ilist_append(wd->o_ilist, icon, label, 1, NULL, NULL, NULL, NULL); if (icon) evas_object_show(icon); } @@ -145,8 +149,18 @@ EAPI void e_widget_ilist_clear(Evas_Object *obj) { E_Widget_Data *wd; + wd = e_widget_data_get(obj); e_ilist_clear(wd->o_ilist); + while (wd->callbacks) + { + E_Widget_Callback *wcb; + + wcb = wd->callbacks->data; + if (wcb->value) free(wcb->value); + free(wcb); + wd->callbacks = evas_list_remove_list(wd->callbacks, wd->callbacks); + } } EAPI int @@ -281,18 +295,15 @@ EAPI void e_widget_ilist_remove_num(Evas_Object *obj, int n) { E_Widget_Data *wd; + E_Widget_Callback *wcb; wd = e_widget_data_get(obj); e_ilist_remove_num(wd->o_ilist, n); -} - -EAPI void -e_widget_ilist_remove_label(Evas_Object *obj, const char *label) -{ - E_Widget_Data *wd; - - wd = e_widget_data_get(obj); - e_ilist_remove_label(wd->o_ilist, label); + wcb = evas_list_nth(wd->callbacks, n); + if (!wcb) return; + if (wcb->value) free(wcb->value); + free(wcb); + wd->callbacks = evas_list_remove(wd->callbacks, wcb); } EAPI void diff --git a/src/bin/e_widget_ilist.h b/src/bin/e_widget_ilist.h index 7241bf53f..1e03f84c0 100644 --- a/src/bin/e_widget_ilist.h +++ b/src/bin/e_widget_ilist.h @@ -28,7 +28,6 @@ EAPI const char *e_widget_ilist_selected_label_get(Evas_Object *obj); EAPI Evas_Object *e_widget_ilist_selected_icon_get(Evas_Object *obj); EAPI void e_widget_ilist_unselect(Evas_Object *obj); EAPI void e_widget_ilist_remove_num(Evas_Object *obj, int n); -EAPI void e_widget_ilist_remove_label(Evas_Object *obj, const char *label); EAPI void e_widget_ilist_multi_select_set(Evas_Object *obj, int multi); EAPI int e_widget_ilist_multi_select_get(Evas_Object *obj); EAPI void e_widget_ilist_multi_select(Evas_Object *obj, int n);