bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=69c2e6f0e63a98131897161b2c2be1d3cbe63bd9
commit 69c2e6f0e63a98131897161b2c2be1d3cbe63bd9 Author: Marcel Hollerbach <[email protected]> Date: Sun May 6 18:23:46 2018 +0200 efl_ui_focus_manager: unset redirect instead of wrefing it so focus is restored correctly --- src/lib/elementary/efl_ui_focus_manager_calc.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c index e6fdd4a7e5..d5f502b508 100644 --- a/src/lib/elementary/efl_ui_focus_manager_calc.c +++ b/src/lib/elementary/efl_ui_focus_manager_calc.c @@ -751,6 +751,12 @@ _efl_ui_focus_manager_calc_unregister(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Manager_ eina_hash_del_by_key(pd->node_hash, &child); } +static void +_redirect_del(void *data, const Efl_Event *event EINA_UNUSED) +{ + efl_ui_focus_manager_redirect_set(data, NULL); +} + EOLIAN static void _efl_ui_focus_manager_calc_efl_ui_focus_manager_redirect_set(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd, Efl_Ui_Focus_Manager *redirect) { @@ -763,12 +769,12 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_redirect_set(Eo *obj, Efl_Ui_Foc old_manager = pd->redirect; if (pd->redirect) - efl_wref_del(pd->redirect, &pd->redirect); + efl_event_callback_del(pd->redirect, EFL_EVENT_DEL, _redirect_del, obj); pd->redirect = redirect; if (pd->redirect) - efl_wref_add(pd->redirect, &pd->redirect); + efl_event_callback_add(pd->redirect, EFL_EVENT_DEL, _redirect_del, obj); efl_ui_focus_manager_reset_history(old_manager); --
