efl_ui_focus_manager_root_focus: maintain focus state over state eval

the rect is unregistered and registered again, if it was focused, still
focus it.
This commit is contained in:
Marcel Hollerbach 2018-04-11 10:33:19 +02:00
parent ba7e4d2168
commit f4b70fc6cd
1 changed files with 9 additions and 2 deletions

View File

@ -31,10 +31,13 @@ static void
_state_eval(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd)
{
Efl_Ui_Focus_Object *root;
Eina_Bool none_logical = EINA_FALSE;
Eina_Bool none_logical = EINA_FALSE, focused = EINA_FALSE;
if (pd->rect_registered)
efl_ui_focus_manager_calc_unregister(obj, pd->rect);
{
focused = efl_ui_focus_object_focus_get(pd->rect);
efl_ui_focus_manager_calc_unregister(obj, pd->rect);
}
root = efl_ui_focus_manager_root_get(obj);
none_logical = !!efl_ui_focus_manager_request_subchild(obj, root);
@ -45,6 +48,10 @@ _state_eval(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd)
{
efl_ui_focus_manager_calc_register(obj, pd->rect, pd->root, NULL);
pd->rect_registered = EINA_TRUE;
if (focused)
efl_ui_focus_manager_focus_set(obj, pd->rect);
}
}