From c8ba7a070fc0ee9aef514fe48aca02153587729e Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Thu, 15 Mar 2018 15:02:57 +0100 Subject: [PATCH] efl_ui_focus_manager_calc: set redirect before setting focus settings the redirect might result in unfocus calls, that might unset evas_object_focus on a object that might be registered in two managers due to border linking. This fixes mysterical disapearing focus. --- src/lib/elementary/efl_ui_focus_manager_calc.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c index 403f8cf265..27799e51c1 100644 --- a/src/lib/elementary/efl_ui_focus_manager_calc.c +++ b/src/lib/elementary/efl_ui_focus_manager_calc.c @@ -1605,7 +1605,12 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_manager_focus_set(Eo *obj, Efl_U } } - + //now check if this is also a listener object + if (redirect_manager) + { + //set the redirect + efl_ui_focus_manager_redirect_set(obj, redirect_manager); + } /* Only emit those signals if we are already at the top of the focus stack. @@ -1620,13 +1625,6 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_manager_focus_set(Eo *obj, Efl_U efl_ui_focus_object_focus_set(new_focusable, EINA_TRUE); efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, last_focusable); } - - //now check if this is also a listener object - if (redirect_manager) - { - //set the redirect - efl_ui_focus_manager_redirect_set(obj, redirect_manager); - } } EOLIAN static void