bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=67188ba22b804cba20ed904df5026b45336e09fe
commit 67188ba22b804cba20ed904df5026b45336e09fe Author: Marcel Hollerbach <[email protected]> Date: Mon Nov 20 09:06:55 2017 +0100 efl_ui_focus_manager: emit callbacks after stack change fix T6389 --- src/lib/elementary/efl_ui_focus_manager_calc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c index a3d72364be..d6f7bfac82 100644 --- a/src/lib/elementary/efl_ui_focus_manager_calc.c +++ b/src/lib/elementary/efl_ui_focus_manager_calc.c @@ -1405,18 +1405,18 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_ last_focusable = _focus_stack_unfocus_last(pd); - if (node->type == NODE_TYPE_NORMAL) - { - //populate the new change - efl_ui_focus_object_focus_set(node->focusable, EINA_TRUE); - } - //remove the object from the list and add it again pd->focus_stack = eina_list_remove(pd->focus_stack, node); pd->focus_stack = eina_list_append(pd->focus_stack, node); + /* + Only emit those signals if we are already at the top of the focus stack. + Otherwise focus_get in the callback to that signal might return false. + */ if (node->type == NODE_TYPE_NORMAL) { + //populate the new change + efl_ui_focus_object_focus_set(node->focusable, EINA_TRUE); efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, last_focusable); } --
