From b5c45be3a1cdbd11e0ec8da9678711aee0524664 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Sat, 21 Sep 2019 11:09:24 +0200 Subject: [PATCH] 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 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 ee80ce4..7a2de74 100644 --- a/src/lib/elementary/efl_ui_focus_manager_sub.c +++ b/src/lib/elementary/efl_ui_focus_manager_sub.c @@ -30,10 +30,21 @@ _set_a_without_b(Eina_List *a, Eina_List *b) } 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 -- 2.7.4