summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWoochan Lee <wc0917.lee@samsung.com>2017-07-19 10:35:49 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-07-19 13:59:42 +0900
commit6d31f5c7fd02779e3481dba715c78ef265efd6ba (patch)
tree03c04cd7890fb28403f8a0495431709ab02fcd56
parent1a16a4f10b1c15c17a78d50538059d667974084a (diff)
downloadefl-6d31f5c7fd02779e3481dba715c78ef265efd6ba.tar.gz
multibuttonentry: Fix item resource clean up logic.
Summary: There are four cases where items are deleted. 1. Select item and push back button. 2. Delete "X" part of item. 3. Calling elm_object_item_del(). 4. MBE deleted. Previous logic is can't support for all cases. below problems were there. eina_list_remove() called twice. list data free twice. @fix Test Plan: elementary_test -> multibuttonentry test. Reviewers: jpeg, cedric Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D5030
-rw-r--r--src/lib/elementary/elc_multibuttonentry.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/elementary/elc_multibuttonentry.c b/src/lib/elementary/elc_multibuttonentry.c
index 9b8fb8ddfa..4458a830b1 100644
--- a/src/lib/elementary/elc_multibuttonentry.c
+++ b/src/lib/elementary/elc_multibuttonentry.c
@@ -393,6 +393,7 @@ _item_del(Elm_Multibuttonentry_Item_Data *item)
ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(obj, sd);
+ sd->items = eina_list_remove(sd->items, EO_OBJ(item));
elm_box_unpack(sd->box, VIEW(item));
efl_event_callback_legacy_call
@@ -551,7 +552,6 @@ _on_item_deleted(void *data,
if (VIEW(temp_it) == obj)
{
elm_wdg_item_del(eo_temp_it);
- sd->items = eina_list_remove(sd->items, eo_temp_it);
break;
}
}
@@ -1142,7 +1142,6 @@ _layout_key_down_cb(void *data,
Elm_Multibuttonentry_Item_Data *item = sd->selected_it;
if (item && sd->editable)
{
- sd->items = eina_list_remove(sd->items, EO_OBJ(item));
elm_wdg_item_del(EO_OBJ(item));
elm_object_focus_set(sd->entry, EINA_TRUE);
}
@@ -1630,13 +1629,14 @@ _elm_multibuttonentry_efl_canvas_group_group_add(Eo *obj, Elm_Multibuttonentry_D
EOLIAN static void
_elm_multibuttonentry_efl_canvas_group_group_del(Eo *obj, Elm_Multibuttonentry_Data *sd)
{
+ Eina_List *l;
Elm_Object_Item *eo_item;
Elm_Multibuttonentry_Item_Filter *_item_filter = NULL;
- EINA_LIST_FREE(sd->items, eo_item)
+ EINA_LIST_FOREACH(sd->items, l, eo_item)
efl_del(eo_item);
- sd->items = NULL;
+ sd->items = eina_list_free(sd->items);
sd->selected_it = NULL;