efl_ui_focus_composition: make sure to not unregister and register again

this fixes issues where a widget suddenly changes parent...
This commit is contained in:
Marcel Hollerbach 2017-11-10 15:12:58 +01:00
parent 42484606d0
commit 4c4224df29
1 changed files with 9 additions and 1 deletions

View File

@ -41,15 +41,23 @@ _state_apply(Eo *obj, Efl_Ui_Focus_Composition_Data *pd)
else if (pd->registered)
{
Eina_List *n;
Eina_List *safed = NULL;
Efl_Ui_Focus_Object *o;
//remove all of them
EINA_LIST_FREE(pd->registered_targets, o)
{
efl_ui_focus_manager_calc_unregister(manager, o);
if (!!eina_list_data_find(pd->register_target, o))
safed = eina_list_append(safed, o);
else
efl_ui_focus_manager_calc_unregister(manager, o);
}
pd->registered_targets = safed;
EINA_LIST_FOREACH(pd->register_target, n, o)
{
if (!!eina_list_data_find(pd->registered_targets, o)) continue;
if (!pd->logical)
efl_ui_focus_manager_calc_register(manager, o, obj, NULL);
else