diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/elementary/elm_genlist.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 9dc9c98..912cbb6 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c | |||
@@ -167,6 +167,9 @@ static Eina_Bool _elm_genlist_tree_effect_setup(Elm_Genlist_Data *sd); | |||
167 | 167 | ||
168 | static void _item_expanded_set_noevent(Elm_Gen_Item *it, Eina_Bool expanded); | 168 | static void _item_expanded_set_noevent(Elm_Gen_Item *it, Eina_Bool expanded); |
169 | 169 | ||
170 | static Eina_Bool _item_process(Elm_Genlist_Data *sd, Elm_Gen_Item *it); | ||
171 | static void _item_process_post(Elm_Genlist_Data *sd, Elm_Gen_Item *it); | ||
172 | |||
170 | static const Elm_Action key_actions[] = { | 173 | static const Elm_Action key_actions[] = { |
171 | {"move", _key_action_move}, | 174 | {"move", _key_action_move}, |
172 | {"select", _key_action_select}, | 175 | {"select", _key_action_select}, |
@@ -3732,16 +3735,26 @@ _item_del(Elm_Gen_Item *it) | |||
3732 | 3735 | ||
3733 | evas_event_freeze(evas_object_evas_get(obj)); | 3736 | evas_event_freeze(evas_object_evas_get(obj)); |
3734 | 3737 | ||
3738 | if (it->item->rel_revs) | ||
3739 | { | ||
3740 | Elm_Gen_Item *tmp; | ||
3741 | EINA_LIST_FREE(it->item->rel_revs, tmp) | ||
3742 | { | ||
3743 | if (tmp->item->queued && !(tmp->base)->on_deletion) | ||
3744 | { | ||
3745 | tmp->item->queued = EINA_FALSE; | ||
3746 | sd->queue = eina_list_remove(sd->queue, tmp); | ||
3747 | _item_process(sd, tmp); | ||
3748 | _item_process_post(sd, tmp); | ||
3749 | } | ||
3750 | tmp->item->rel = NULL; | ||
3751 | } | ||
3752 | } | ||
3735 | if (it->item->rel) | 3753 | if (it->item->rel) |
3736 | { | 3754 | { |
3737 | it->item->rel->item->rel_revs = | 3755 | it->item->rel->item->rel_revs = |
3738 | eina_list_remove(it->item->rel->item->rel_revs, it); | 3756 | eina_list_remove(it->item->rel->item->rel_revs, it); |
3739 | } | 3757 | } |
3740 | if (it->item->rel_revs) | ||
3741 | { | ||
3742 | Elm_Gen_Item *tmp; | ||
3743 | EINA_LIST_FREE(it->item->rel_revs, tmp) tmp->item->rel = NULL; | ||
3744 | } | ||
3745 | elm_genlist_item_subitems_clear(EO_OBJ(it)); | 3758 | elm_genlist_item_subitems_clear(EO_OBJ(it)); |
3746 | if (sd->show_item == it) sd->show_item = NULL; | 3759 | if (sd->show_item == it) sd->show_item = NULL; |
3747 | if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE); | 3760 | if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE); |