forked from enlightenment/efl
efl_ui_focus_manager: unset redirect instead of wrefing it
so focus is restored correctly
This commit is contained in:
parent
fa9aff8f70
commit
69c2e6f0e6
|
@ -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);
|
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
|
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)
|
_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;
|
old_manager = pd->redirect;
|
||||||
|
|
||||||
if (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;
|
pd->redirect = redirect;
|
||||||
|
|
||||||
if (pd->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);
|
efl_ui_focus_manager_reset_history(old_manager);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue