From fac3fa1c882d679eaf38f24d81703045f1cd13d3 Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Sun, 13 Jan 2019 13:03:04 +0100 Subject: [PATCH] efl_ui_focus: delete elements on invalidate this lead to ERR's. A element is invalidated while the composition element is invalidated, which means, not yet deleted, but the Pointer will fail a call to efl_isa. Differential Revision: https://phab.enlightenment.org/D7623 --- src/lib/elementary/efl_ui_focus_composition.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_composition.c b/src/lib/elementary/efl_ui_focus_composition.c index 8a4b3dfe4c..2eda064b07 100644 --- a/src/lib/elementary/efl_ui_focus_composition.c +++ b/src/lib/elementary/efl_ui_focus_composition.c @@ -92,10 +92,11 @@ _state_apply(Eo *obj, Efl_Ui_Focus_Composition_Data *pd) } } static void -_del(void *data, const Efl_Event *ev) +_invalidate(void *data, const Efl_Event *ev) { Efl_Ui_Focus_Composition_Data *pd = efl_data_scope_get(data, EFL_UI_FOCUS_COMPOSITION_MIXIN); pd->register_target = eina_list_remove(pd->register_target, ev->object); + pd->registered_targets = eina_list_remove(pd->registered_targets, ev->object); } EOLIAN static void @@ -107,7 +108,7 @@ _efl_ui_focus_composition_composition_elements_set(Eo *obj, Efl_Ui_Focus_Composi pd->targets_ordered = eina_list_free(pd->targets_ordered); EINA_LIST_FREE(pd->register_target, elem) { - efl_event_callback_del(elem, EFL_EVENT_DEL, _del, obj); + efl_event_callback_del(elem, EFL_EVENT_INVALIDATE, _invalidate, obj); } pd->order = eina_list_free(pd->order); @@ -125,7 +126,7 @@ _efl_ui_focus_composition_composition_elements_set(Eo *obj, Efl_Ui_Focus_Composi if (efl_isa(elem, EFL_UI_FOCUS_OBJECT_MIXIN)) { pd->register_target = eina_list_append(pd->register_target , o); - efl_event_callback_add(o, EFL_EVENT_DEL, _del, obj); + efl_event_callback_add(o, EFL_EVENT_INVALIDATE, _invalidate, obj); } else {