bu5hm4n pushed a commit to branch master.

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

commit c8ba7a070fc0ee9aef514fe48aca02153587729e
Author: Marcel Hollerbach <[email protected]>
Date:   Thu Mar 15 15:02:57 2018 +0100

    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

-- 


Reply via email to