cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=e5ec4d3b79549333bad08699751d2069c1406adc
commit e5ec4d3b79549333bad08699751d2069c1406adc Author: Woochan Lee <wc0917....@samsung.com> Date: Tue Sep 22 01:49:45 2015 +0200 multibuttonentry: fix MBE item clear, item delete logic error. Summary: elm_multibuttonentry_clear API not worked well. It deleted only odd items. Because of the sd->items has been modified inside elm_widget_item_del(). Then we don't have to search target item inside of _item_del(). @fix Test Plan: Add MBE items. Call elm_multibuttonentry_clear API. Check the bug state. Reviewers: Hermet, cedric Reviewed By: cedric Differential Revision: https://phab.enlightenment.org/D3065 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/elc_multibuttonentry.c | 37 ++++++++----------------------------- 1 file changed, 8 insertions(+), 29 deletions(-) diff --git a/src/lib/elc_multibuttonentry.c b/src/lib/elc_multibuttonentry.c index c094552..52d8429 100644 --- a/src/lib/elc_multibuttonentry.c +++ b/src/lib/elc_multibuttonentry.c @@ -382,30 +382,18 @@ end: static void _item_del(Elm_Multibuttonentry_Item_Data *item) { - Eina_List *l; - Elm_Object_Item *eo_it; Evas_Object *obj = WIDGET(item); ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(obj, sd); - EINA_LIST_FOREACH(sd->items, l, eo_it) - { - ELM_MULTIBUTTONENTRY_ITEM_DATA_GET(eo_it, it); - if (it == item) - { - sd->items = eina_list_remove(sd->items, eo_it); - elm_box_unpack(sd->box, VIEW(it)); + sd->items = eina_list_remove(sd->items, EO_OBJ(item)); + elm_box_unpack(sd->box, VIEW(item)); - eo_do(obj, eo_event_callback_call - (ELM_MULTIBUTTONENTRY_EVENT_ITEM_DELETED, eo_it)); + eo_do(obj, eo_event_callback_call + (ELM_MULTIBUTTONENTRY_EVENT_ITEM_DELETED, EO_OBJ(item))); - evas_object_del(VIEW(it)); - - if (sd->selected_it == it) - sd->selected_it = NULL; - break; - } - } + if (sd->selected_it == item) + sd->selected_it = NULL; if (sd->view_state == MULTIBUTTONENTRY_VIEW_SHRINK) _shrink_mode_set(obj, EINA_TRUE); @@ -1842,18 +1830,9 @@ _elm_multibuttonentry_item_selected_get(Eo *eo_item, EOLIAN static void _elm_multibuttonentry_clear(Eo *obj EINA_UNUSED, Elm_Multibuttonentry_Data *sd) { - Elm_Object_Item *eo_item; + while (sd->items) + eo_do(eina_list_data_get(sd->items), elm_wdg_item_del()); - if (sd->items) - { - EINA_LIST_FREE(sd->items, eo_item) - { - ELM_MULTIBUTTONENTRY_ITEM_DATA_GET(eo_item, item); - elm_box_unpack(sd->box, VIEW(item)); - eo_del(eo_item); - } - sd->items = NULL; - } sd->selected_it = NULL; _view_update(sd); } --