summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-09-21 11:09:24 +0200
committerCedric Bail <cedric.bail@free.fr>2019-09-23 10:33:17 -0700
commit63ebd0e9cc54bdbc48dac0cc0bca1892a8fde94a (patch)
tree5790af7f3599ee52cdf6038c721cb1aff86b75e7
parent802f414b257aa0203d47abe2d01c788ae276cd91 (diff)
downloadefl-63ebd0e9cc54bdbc48dac0cc0bca1892a8fde94a.tar.gz
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.bail@free.fr> Differential Revision: https://phab.enlightenment.org/D10067
-rw-r--r--src/lib/elementary/efl_ui_focus_manager_sub.c12
1 files changed, 12 insertions, 0 deletions
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
@@ -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