diff options
author | Marcel Hollerbach <marcel@osg.samsung.com> | 2018-05-06 18:23:46 +0200 |
---|---|---|
committer | Marcel Hollerbach <marcel@osg.samsung.com> | 2018-05-08 11:50:04 +0200 |
commit | 69c2e6f0e63a98131897161b2c2be1d3cbe63bd9 (patch) | |
tree | 5e6ee12258cece51d4f7c767213d4278c27056e8 | |
parent | fa9aff8f70a183453c04084c9e064548fa7ef5f4 (diff) | |
download | efl-69c2e6f0e63a98131897161b2c2be1d3cbe63bd9.tar.gz |
efl_ui_focus_manager: unset redirect instead of wrefing it
so focus is restored correctly
-rw-r--r-- | src/lib/elementary/efl_ui_focus_manager_calc.c | 10 |
1 files 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); |