From: Enlightenment S. <no-...@en...> - 2009-03-11 13:16:10
|
Log: * e_widget_ilist.c: Ok, this is a quick fix (disable queue for now). A better fix would be to propagate the delete operation to e_ilist.c and mark the selected entry to be deleted and update code listing selected item to not return to be deleted item. NOTE: Is it really usefull ? Doesn't evas/edje delay the destruction of Evas_Object anyway ? Author: cedric Date: 2009-03-11 06:16:01 -0700 (Wed, 11 Mar 2009) New Revision: 39445 Modified: trunk/e/src/bin/e_widget_ilist.c Modified: trunk/e/src/bin/e_widget_ilist.c =================================================================== --- trunk/e/src/bin/e_widget_ilist.c 2009-03-10 22:44:36 UTC (rev 39444) +++ trunk/e/src/bin/e_widget_ilist.c 2009-03-11 13:16:01 UTC (rev 39445) @@ -667,18 +667,21 @@ EAPI void e_widget_ilist_remove_num(Evas_Object *obj, int n) { - _queue_append(obj, 6, NULL, NULL, 0, NULL, NULL, NULL, 0, 0, n); -/* +/* _queue_append(obj, 6, NULL, NULL, 0, NULL, NULL, NULL, 0, 0, n); */ + E_Widget_Callback *wcb; E_Widget_Data *wd; - E_Widget_Callback *wcb; + Eina_List *item; wd = e_widget_data_get(obj); e_ilist_remove_num(wd->o_ilist, n); - if (!(wcb = eina_list_nth(wd->callbacks, n))) return; - if (wcb->value) free(wcb->value); - free(wcb); - wd->callbacks = eina_list_remove(wd->callbacks, wcb); - */ + item = eina_list_nth_list(wd->callbacks, n); + if (item) + { + wcb = eina_list_data_get(item); + if (wcb && wcb->value) free(wcb->value); + free(wcb); + wd->callbacks = eina_list_remove_list(wd->callbacks, item); + } } EAPI void |