efl_ui_focus_manager_calc: ensure that the coords are marked dirty

this is needed when a object is unregistered, otherwise a user of the
event is not informed when a element is gone, and thus the border
elements might have changed.

Differential Revision: https://phab.enlightenment.org/D7353
This commit is contained in:
Marcel Hollerbach 2018-11-23 12:38:00 +01:00
parent e36dce177e
commit ac8d16684d
1 changed files with 6 additions and 0 deletions

View File

@ -231,6 +231,7 @@ node_item_free(Node *item)
Eina_List *l;
Eo *obj = item->manager;
FOCUS_DATA(obj);
Eina_Bool dirty_added = EINA_FALSE;
/*cleanup graph parts*/
@ -243,6 +244,7 @@ node_item_free(Node *item)
EINA_LIST_FOREACH(DIRECTION_ACCESS(node, i).field, l, partner) \
{ \
dirty_add(obj, pd, partner); \
dirty_added = EINA_TRUE; \
}
MAKE_LIST_DIRTY(item, one_direction)
@ -252,6 +254,10 @@ node_item_free(Node *item)
border_onedirection_set(item, i, NULL);
}
//the unregistering of a item should ever result in atleast a coords_dirty call
if (!dirty_added)
efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, NULL);
/*cleanup manager householdings*/
//remove from the focus stack