Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_tree2.c 


Log Message:
- these lists are needed for the tree to work correctly.

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_tree2.c,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -3 -r1.79 -r1.80
--- ewl_tree2.c 9 Jul 2007 19:38:50 -0000       1.79
+++ ewl_tree2.c 19 Jul 2007 15:52:01 -0000      1.80
@@ -1036,6 +1036,7 @@
 ewl_tree2_node_expand(Ewl_Tree2_Node *node)
 {
        Ewl_Widget *child;
+       Ecore_List *tmp;
        Ewl_Model *model;
        void *data;
 
@@ -1051,13 +1052,22 @@
         */
        ewl_widget_configure(node->tree);
 
+       /* This is needed as in the child_show cb we will case a list walk.
+        * We need this till the lists get iterators */
+       tmp = ecore_list_new();
+
        ecore_dlist_goto_first(EWL_CONTAINER(node)->children);
        while ((child = ecore_dlist_next(EWL_CONTAINER(node)->children)))
        {
                if ((child != node->handle) && (child != node->row))
-                       ewl_widget_show(child);
+                       ecore_list_append(tmp, child);
        }
 
+       while ((child = ecore_list_remove_first(tmp)))
+               ewl_widget_show(child);
+
+       IF_FREE_LIST(tmp);
+
        model = ewl_mvc_model_get(EWL_MVC(node));
        data = ewl_mvc_data_get(EWL_MVC(node));
        if (model->expansion.data && !node->built_children)
@@ -1097,6 +1107,7 @@
 ewl_tree2_node_collapse(Ewl_Tree2_Node *node)
 {
        Ewl_Widget *child;
+       Ecore_List *tmp;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -1110,12 +1121,21 @@
         */
        ewl_widget_configure(node->tree);
 
+       /* This is needed becase in our child_hide callback we will cause a
+        * list iteration. Until we get iterators we need this */
+       tmp = ecore_list_new();
+
        ecore_dlist_goto_first(EWL_CONTAINER(node)->children);
        while ((child = ecore_dlist_next(EWL_CONTAINER(node)->children)))
        {
                if ((child != node->handle) && (child != node->row))
-                       ewl_widget_hide(child);
+                       ecore_list_append(tmp, child);
        }
+
+       while ((child = ecore_list_remove_first(tmp)))
+               ewl_widget_hide(child);
+
+       IF_FREE_LIST(tmp);
 
        ewl_tree2_row_collapse(EWL_TREE2(node->tree),
                        ewl_mvc_data_get(EWL_MVC(node)), node->row_num);



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to