bu5hm4n pushed a commit to branch master.

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

commit 69c2e6f0e63a98131897161b2c2be1d3cbe63bd9
Author: Marcel Hollerbach <[email protected]>
Date:   Sun May 6 18:23:46 2018 +0200

    efl_ui_focus_manager: unset redirect instead of wrefing it
    
    so focus is restored correctly
---
 src/lib/elementary/efl_ui_focus_manager_calc.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c 
b/src/lib/elementary/efl_ui_focus_manager_calc.c
index e6fdd4a7e5..d5f502b508 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -751,6 +751,12 @@ _efl_ui_focus_manager_calc_unregister(Eo *obj EINA_UNUSED, 
Efl_Ui_Focus_Manager_
    eina_hash_del_by_key(pd->node_hash, &child);
 }
 
+static void
+_redirect_del(void *data, const Efl_Event *event EINA_UNUSED)
+{
+   efl_ui_focus_manager_redirect_set(data, NULL);
+}
+
 EOLIAN static void
 _efl_ui_focus_manager_calc_efl_ui_focus_manager_redirect_set(Eo *obj, 
Efl_Ui_Focus_Manager_Calc_Data *pd, Efl_Ui_Focus_Manager *redirect)
 {
@@ -763,12 +769,12 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_redirect_set(Eo *obj, Efl_Ui_Foc
    old_manager = pd->redirect;
 
    if (pd->redirect)
-     efl_wref_del(pd->redirect, &pd->redirect);
+     efl_event_callback_del(pd->redirect, EFL_EVENT_DEL, _redirect_del, obj);
 
    pd->redirect = redirect;
 
    if (pd->redirect)
-     efl_wref_add(pd->redirect, &pd->redirect);
+     efl_event_callback_add(pd->redirect, EFL_EVENT_DEL, _redirect_del, obj);
 
    efl_ui_focus_manager_reset_history(old_manager);
 

-- 


Reply via email to