list/genlist/gengrid: Clear some internal variables when an item is deleted.

Set last_selected_item, last_focused_item, focused_item to NULL when the
item is deleted.
For genlist and gengrid, clear them in del_not_serious.
This commit is contained in:
Daniel Juyung Seo 2014-03-09 02:55:35 +09:00
parent 80a3eea785
commit e60e43f8f5
3 changed files with 15 additions and 4 deletions

View File

@ -2028,6 +2028,8 @@ _elm_gengrid_item_del_not_serious(Elm_Gen_Item *it)
if (it->selected)
sd->selected = eina_list_remove(sd->selected, it);
if (sd->last_selected_item == (Elm_Object_Item *)it)
sd->last_selected_item = NULL;
if (it->itc->func.del)
it->itc->func.del((void *)it->base.data, WIDGET(it));
@ -2051,8 +2053,6 @@ _elm_gengrid_item_del_serious(Elm_Gen_Item *it)
ecore_job_del(sd->calc_job);
sd->calc_job = ecore_job_add(sd->calc_cb, sd->obj);
if (sd->last_selected_item == (Elm_Object_Item *)it)
sd->last_selected_item = NULL;
sd->item_count--;
ELM_SAFE_FREE(it->item, free);

View File

@ -3227,6 +3227,12 @@ _elm_genlist_item_del_not_serious(Elm_Gen_Item *it)
if (it->selected)
sd->selected = eina_list_remove(sd->selected, it);
if (sd->last_focused_item == (Elm_Object_Item *)it)
sd->last_focused_item = NULL;
if (sd->focused_item == (Elm_Object_Item *)it)
sd->focused_item = NULL;
if (sd->last_selected_item == (Elm_Object_Item *)it)
sd->last_selected_item = NULL;
if (it->itc->func.del)
it->itc->func.del((void *)it->base.data, WIDGET(it));
@ -3251,8 +3257,6 @@ _elm_genlist_item_del_serious(Elm_Gen_Item *it)
ecore_job_del(sd->calc_job);
sd->calc_job = ecore_job_add(_calc_job, sd->obj);
if (sd->last_selected_item == (Elm_Object_Item *)it)
sd->last_selected_item = NULL;
sd->item_count--;
ELM_SAFE_FREE(it->item, free);

View File

@ -1670,6 +1670,13 @@ _item_del_pre_hook(Elm_Object_Item *it)
sd->items = eina_list_remove_list(sd->items, item->node);
if (sd->focused_item == (Elm_Object_Item *)it)
sd->focused_item = NULL;
if (sd->last_focused_item == (Elm_Object_Item *)it)
sd->last_focused_item = NULL;
if (sd->last_selected_item == (Elm_Object_Item *)it)
sd->last_selected_item = NULL;
evas_object_ref(obj);
_elm_list_walk(sd);