bu5hm4n pushed a commit to branch master.

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

commit bd9b112094fd8efdae0d01c4db6a3f1abc711d5b
Author: Marcel Hollerbach <mar...@osg.samsung.com>
Date:   Wed Apr 25 13:29:26 2018 +0200

    efl_ui_focus_manager_calc: make the preparation call tree style
    
    So we make sure that all children are prepared.
---
 src/lib/elementary/efl_ui_focus_manager_calc.c | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c 
b/src/lib/elementary/efl_ui_focus_manager_calc.c
index 1d9bd1b5de..6845e1195b 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -1175,21 +1175,30 @@ _iterator_free(Border_Elements_Iterator *it)
    free(it);
 }
 
+static void
+_prepare_node(Node *root)
+{
+   Eina_List *n;
+   Node *node;
+
+   efl_ui_focus_object_prepare_logical(root->focusable);
+
+   EINA_LIST_FOREACH(root->tree.children, n, node)
+     {
+        _prepare_node(node);
+     }
+}
+
 EOLIAN static Eina_Iterator*
 _efl_ui_focus_manager_calc_efl_ui_focus_manager_border_elements_get(const Eo 
*obj, Efl_Ui_Focus_Manager_Calc_Data *pd)
 {
    Border_Elements_Iterator *it;
-   Node *n;
 
    /* XXX const */
    dirty_flush_all((Eo *)obj, pd);
 
-   Eina_Iterator *elements = eina_hash_iterator_data_new(pd->node_hash);
-   EINA_ITERATOR_FOREACH(elements, n)
-     {
-        efl_ui_focus_object_prepare_logical(n->focusable);
-     }
-   eina_iterator_free(elements);
+   //now call prepare on every node
+   _prepare_node(pd->root);
 
    it = calloc(1, sizeof(Border_Elements_Iterator));
 

-- 


Reply via email to