cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=63ebd0e9cc54bdbc48dac0cc0bca1892a8fde94a

commit 63ebd0e9cc54bdbc48dac0cc0bca1892a8fde94a
Author: Marcel Hollerbach <m...@marcel-hollerbach.de>
Date:   Sat Sep 21 11:09:24 2019 +0200

    efl_ui_focus_managr_sub: fix a err message
    
    with this commit there are a few errors less, for the case a object is
    destroyed while registered as a border element in the sub manager.
    This adds a few more callbacks to the list of callbacks, however, i
    could not messure a big performance impact.
    
    Reviewed-by: Cedric BAIL <cedric.b...@free.fr>
    Differential Revision: https://phab.enlightenment.org/D10067
---
 src/lib/elementary/efl_ui_focus_manager_sub.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/lib/elementary/efl_ui_focus_manager_sub.c 
b/src/lib/elementary/efl_ui_focus_manager_sub.c
index ee80ce40d2..7a2de74003 100644
--- a/src/lib/elementary/efl_ui_focus_manager_sub.c
+++ b/src/lib/elementary/efl_ui_focus_manager_sub.c
@@ -29,11 +29,22 @@ _set_a_without_b(Eina_List *a, Eina_List *b)
    return a_out;
 }
 
+static void
+_invalidate_cb(void *data, const Efl_Event *ev)
+{
+   MY_DATA(data, pd);
+
+   EINA_SAFETY_ON_NULL_RETURN(pd);
+
+   pd->current_border = eina_list_remove(pd->current_border, ev->object);
+}
+
 static void
 _register(Efl_Ui_Focus_Manager *obj, Efl_Ui_Focus_Manager *par_m, 
Efl_Ui_Focus_Object *node, Efl_Ui_Focus_Object *logical)
 {
    if (par_m)
      efl_ui_focus_manager_calc_register(par_m, node, logical, obj);
+   efl_event_callback_add(node, EFL_EVENT_INVALIDATE, _invalidate_cb, obj);
 }
 
 static void
@@ -41,6 +52,7 @@ _unregister(Efl_Ui_Focus_Manager *obj EINA_UNUSED, 
Efl_Ui_Focus_Manager *par_m,
 {
    if (par_m)
      efl_ui_focus_manager_calc_unregister(par_m, node);
+   efl_event_callback_del(node, EFL_EVENT_INVALIDATE, _invalidate_cb, obj);
 }
 
 static void

-- 


Reply via email to