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