bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4c4224df29a9908ebbdcce0e0a85e262bec4780a

commit 4c4224df29a9908ebbdcce0e0a85e262bec4780a
Author: Marcel Hollerbach <mar...@osg.samsung.com>
Date:   Fri Nov 10 15:12:58 2017 +0100

    efl_ui_focus_composition: make sure to not unregister and register again
    
    this fixes issues where a widget suddenly changes parent...
---
 src/lib/elementary/efl_ui_focus_composition.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_focus_composition.c 
b/src/lib/elementary/efl_ui_focus_composition.c
index 5fa4950dde..222f5b771b 100644
--- a/src/lib/elementary/efl_ui_focus_composition.c
+++ b/src/lib/elementary/efl_ui_focus_composition.c
@@ -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

-- 


Reply via email to