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);
      }
 

-- 


Reply via email to