bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0220418b84bf171403e6a98501f91217be39d401

commit 0220418b84bf171403e6a98501f91217be39d401
Author: Marcel Hollerbach <mar...@osg.samsung.com>
Date:   Tue Oct 17 19:30:15 2017 +0200

    efl_ui_focus_manager_calc: check if we are already focused earlier
    
    if we dont do that we may unset a redirect just to set the same redirect
    again.
---
 src/lib/elementary/efl_ui_focus_manager_calc.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c 
b/src/lib/elementary/efl_ui_focus_manager_calc.c
index 88cdcf764c..6921de5d8d 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -1246,7 +1246,6 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_
    Efl_Ui_Focus_Manager *redirect_manager;
    Eo *focusable;
    Node_Type type;
-   Eina_Bool was_redirect = EINA_FALSE;
 
    EINA_SAFETY_ON_NULL_RETURN(focus);
 
@@ -1291,6 +1290,13 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_
           }
      }
 
+   if (eina_list_last_data_get(pd->focus_stack) == node)
+     {
+        //the correct one is focused
+        if (node->redirect_manager == pd->redirect)
+          return;
+     }
+
    if (pd->redirect)
      {
         //reset the history of that manager
@@ -1298,9 +1304,6 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_
 
         //first unset the redirect
         efl_ui_focus_manager_redirect_set(obj, NULL);
-
-        //we have been redirecting
-        was_redirect = EINA_TRUE;
      }
 
    redirect_manager = node->redirect_manager;
@@ -1313,9 +1316,6 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_
         //check if this is already the focused object
         old_focus = eina_list_last_data_get(pd->focus_stack);
 
-        //check if this is already at the top
-        if (!was_redirect && old_focus && old_focus->focusable == focus) 
return;
-
         //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);

-- 


Reply via email to