static void _internal_elm_genlist_clear(Evas_Object *obj);
static Eina_Bool _item_filtered_get(Elm_Gen_Item *it);
+static Eina_Bool _item_process(Elm_Genlist_Data *sd, Elm_Gen_Item *it);
+static void _item_process_post(Elm_Genlist_Data *sd, Elm_Gen_Item *it,Eina_Bool qadd);
+
static const Elm_Action key_actions[] = {
{"move", _key_action_move},
{"select", _key_action_select},
evas_event_freeze(evas_object_evas_get(obj));
+ if (it->item->rel_revs)
+ {
+ Elm_Gen_Item *tmp;
+ EINA_LIST_FREE(it->item->rel_revs, tmp)
+ {
+ if (tmp->item->queued && !(tmp->base)->on_deletion)
+ {
+ tmp->item->queued = EINA_FALSE;
+ sd->queue = eina_list_remove(sd->queue, tmp);
+ _item_process(sd, tmp);
+ _item_process_post(sd, tmp, EINA_TRUE);
+ }
+ tmp->item->rel = NULL;
+ }
+ }
if (it->item->rel)
{
it->item->rel->item->rel_revs =
eina_list_remove(it->item->rel->item->rel_revs, it);
}
- if (it->item->rel_revs)
- {
- Elm_Gen_Item *tmp;
- EINA_LIST_FREE(it->item->rel_revs, tmp) tmp->item->rel = NULL;
- }
elm_genlist_item_subitems_clear(EO_OBJ(it));
if (sd->show_item == it) sd->show_item = NULL;
if (it->realized) _elm_genlist_item_unrealize(it, EINA_FALSE);
sd->del_fx.pending_items = eina_list_remove(sd->del_fx.pending_items, it);
sd->add_fx.items = eina_list_remove(sd->add_fx.items, it);
#endif
+
+ if (GL_IT(it)->rel)
+ GL_IT(it)->rel->item->rel_revs =
+ eina_list_remove(GL_IT(it)->rel->item->rel_revs, it);
+ if (GL_IT(it)->rel_revs)
+ {
+ Elm_Gen_Item *tmp;
+ EINA_LIST_FREE(GL_IT(it)->rel_revs, tmp)
+ {
+ if (tmp->item->queued && !(tmp->base)->on_deletion)
+ {
+ GL_IT(tmp)->queued = EINA_FALSE;
+ GL_IT(tmp)->resized = EINA_FALSE;
+ sd->queue = eina_list_remove(sd->queue, tmp);
+ _item_process(sd, tmp);
+ }
+ tmp->item->rel = NULL;
+ }
+ }
+ EINA_LIST_FOREACH_SAFE(it->item->items, l, ll, eo_it2)
+ {
+ //elm_widget_item_del(it2);
+ ELM_GENLIST_ITEM_DATA_GET(eo_it2, it2);
+ _item_free(it2);
+ }
+ sd->reorder.move_items = eina_list_remove(sd->reorder.move_items, it);
+
if (GL_IT(it)->block) _item_block_del(it);
if (it->parent)
it->parent->item->items =
if (GL_IT(it)->type == ELM_GENLIST_ITEM_GROUP)
sd->group_items = eina_list_remove(sd->group_items, it);
- // FIXME: relative will be better to be fixed. it is too harsh.
- if (GL_IT(it)->rel)
- GL_IT(it)->rel->item->rel_revs =
- eina_list_remove(GL_IT(it)->rel->item->rel_revs, it);
- if (GL_IT(it)->rel_revs)
- {
- Elm_Gen_Item *tmp;
- EINA_LIST_FREE(GL_IT(it)->rel_revs, tmp) tmp->item->rel = NULL;
- }
- EINA_LIST_FOREACH_SAFE(it->item->items, l, ll, eo_it2)
- {
- //elm_widget_item_del(it2);
- ELM_GENLIST_ITEM_DATA_GET(eo_it2, it2);
- _item_free(it2);
- }
-
- sd->reorder.move_items = eina_list_remove(sd->reorder.move_items, it);
if (it->selected)
{
sd->selected = eina_list_remove(sd->selected, EO_OBJ(it));