Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_tree2.c ewl_tree2.h 


Log Message:
- build child rows as their needed instead of all at once

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_tree2.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -3 -r1.67 -r1.68
--- ewl_tree2.c 24 Mar 2007 23:34:14 -0000      1.67
+++ ewl_tree2.c 24 Mar 2007 23:58:20 -0000      1.68
@@ -830,8 +830,6 @@
                if (col && model->expansion.is && model->expansion.is(data, i))
                {
                        int hidden = TRUE;
-                       Ewl_Model *tmp_model = NULL;
-                       void *tmp_data;
 
                        if (!model->expansion.data)
                        {
@@ -849,15 +847,6 @@
                                ewl_tree2_node_expand(EWL_TREE2_NODE(node));
                                hidden = FALSE;
                        }
-
-                       tmp_data = model->expansion.data(data, i);
-                       if (model->expansion.model)
-                               tmp_model = model->expansion.model(data, i);
-
-                       if (!tmp_model) tmp_model = model;
-
-                       ewl_tree2_build_tree_rows(tree, tmp_model, tmp_data, 
-                                                       colour, node, hidden);
                }
                else
                        ewl_tree2_node_expandable_set(EWL_TREE2_NODE(node), 
NULL);
@@ -1281,6 +1270,8 @@
 {
        Ewl_Widget *child;
        Ecore_List *tmp;
+       Ewl_Model *model;
+       void *data;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
@@ -1308,9 +1299,27 @@
 
        IF_FREE_LIST(tmp);
 
-       ewl_tree2_row_expand(EWL_TREE2(node->tree),
-                       ewl_mvc_data_get(EWL_MVC(node)),
-                       node->row_num);
+       model = ewl_mvc_model_get(EWL_MVC(node));
+       data = ewl_mvc_data_get(EWL_MVC(node));
+       if (model->expansion.data && !node->built_children)
+       {
+               Ewl_Model *tmp_model = NULL;
+               void *tmp_data;
+
+               tmp_data = model->expansion.data(data, node->row_num);
+               if (model->expansion.model)
+                       tmp_model = model->expansion.model(data, 
+                                                       node->row_num);
+
+               if (!tmp_model) tmp_model = model;
+
+               ewl_tree2_build_tree_rows(EWL_TREE2(node->tree), tmp_model, 
+                                       tmp_data, 0, EWL_WIDGET(node), FALSE);
+
+               node->built_children = TRUE;
+       }
+
+       ewl_tree2_row_expand(EWL_TREE2(node->tree), data, node->row_num);
 
        node->expanded = EWL_TREE_NODE_EXPANDED;
        ewl_check_checked_set(EWL_CHECK(node->handle), TRUE);
===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_tree2.h,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -3 -r1.43 -r1.44
--- ewl_tree2.h 12 Mar 2007 22:22:36 -0000      1.43
+++ ewl_tree2.h 24 Mar 2007 23:58:20 -0000      1.44
@@ -229,6 +229,8 @@
 
        unsigned int row_num;           /**< The row number of this row */
        Ewl_Tree_Node_Flags expanded;
+
+       unsigned char built_children:1; /**< Have we generated child nodes */
 };
 
 Ewl_Widget     *ewl_tree2_node_new(void);



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to