efl_ui_focus_manager_calc: ensure that the coords are marked dirty
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Fri, 23 Nov 2018 11:38:00 +0000 (12:38 +0100)
committerHermet Park <hermetpark@gmail.com>
Wed, 5 Dec 2018 05:43:46 +0000 (14:43 +0900)
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

src/lib/elementary/efl_ui_focus_manager_calc.c

index 1906ddd..e4d0332 100644 (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