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:
parent
80a3eea785
commit
e60e43f8f5
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue