Enlightenment CVS committal Author : dj2 Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: ewl_model.c ewl_model.h ewl_tree2.c ewl_tree2.h Log Message: - tree2 work =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_model.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- ewl_model.c 6 Feb 2006 03:40:26 -0000 1.1 +++ ewl_model.c 6 Feb 2006 04:14:45 -0000 1.2 @@ -34,6 +34,9 @@ DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR_RET("model", model, FALSE); + /* we're dirty by default */ + model->dirty = TRUE; + DRETURN_INT(TRUE, DLEVEL_STABLE); } @@ -184,5 +187,32 @@ DRETURN_PTR(m->header_fetch, DLEVEL_STABLE); } +/** + * @param m: The model to set dirty + * @param dirty: The dirty value to set + * @return Returns no value + */ +void +ewl_model_dirty_set(Ewl_Model *m, unsigned int dirty) +{ + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR("m", m); + m->dirty = !!dirty; + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +/** + * @param m: The model to get the dirty value of + * @return Returns TRUE if the model is dirty, FALSE otherwise + */ +unsigned int +ewl_model_dirty_get(Ewl_Model *m) +{ + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR_RET("m", m, FALSE); + + DRETURN_INT(m->dirty, DLEVEL_STABLE); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_model.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- ewl_model.h 6 Feb 2006 03:40:26 -0000 1.1 +++ ewl_model.h 6 Feb 2006 04:14:45 -0000 1.2 @@ -55,6 +55,8 @@ Ewl_Model_Sort sort; /**< Trigger sort on column */ Ewl_Model_Count count; /**< Count of data items */ Ewl_Model_Header_Fetch header_fetch; /**< Get the header for the given column */ + + unsigned int dirty; /**< Is this models data dirty? */ }; Ewl_Model *ewl_model_new(void); @@ -75,6 +77,9 @@ void ewl_model_header_fetch_set(Ewl_Model *m, Ewl_Model_Header_Fetch f); Ewl_Model_Header_Fetch ewl_model_header_fetch_get(Ewl_Model *m); +void ewl_model_dirty_set(Ewl_Model *m, unsigned int dirty); +unsigned int ewl_model_dirty_get(Ewl_Model *m); + /** * @} */ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_tree2.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ewl_tree2.c 6 Feb 2006 03:40:26 -0000 1.5 +++ ewl_tree2.c 6 Feb 2006 04:14:45 -0000 1.6 @@ -68,6 +68,10 @@ EWL_FLAG_FILL_HFILL | EWL_FLAG_FILL_VSHRINK); ewl_widget_show(tree->header); + tree->rows = ewl_vbox_new(); + ewl_container_child_append(EWL_CONTAINER(tree), tree->rows); + ewl_widget_show(tree->rows); + ewl_tree2_headers_visible_set(tree, TRUE); ewl_tree2_fixed_rows_set(tree, FALSE); @@ -76,6 +80,9 @@ ewl_callback_prepend(EWL_WIDGET(tree), EWL_CALLBACK_DESTROY, ewl_tree2_cb_destroy, NULL); + ewl_container_resize_notify_set(EWL_CONTAINER(tree), + ewl_tree2_cb_child_resize); + ewl_widget_focusable_set(EWL_WIDGET(tree), FALSE); DRETURN_INT(TRUE, DLEVEL_STABLE); @@ -401,7 +408,7 @@ { Ewl_Tree2 *tree; Ewl_Tree2_Column *col; - int column = 0; + int column = 0, dirty = FALSE; DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR("w", w); @@ -409,6 +416,19 @@ tree = EWL_TREE2(w); + ecore_list_goto_first(tree->columns); + while ((col = ecore_list_next(tree->columns))) + { + if (ewl_model_dirty_get(col->model)) + { + dirty = TRUE; + break; + } + } + + /* if none of the models are dirty we are done */ + if (!dirty) DRETURN(DLEVEL_STABLE); + /* setup the headers */ ewl_container_reset(EWL_CONTAINER(tree->header)); ecore_list_goto_first(tree->columns); @@ -419,11 +439,33 @@ h = col->model->header_fetch(tree->data, column); ewl_container_child_append(EWL_CONTAINER(tree->header), h); -printf("%s\n", ewl_label_text_get(EWL_LABEL(h))); - + /* once we are done this model won't be dirty anymore */ + col->model->dirty = FALSE; column ++; } + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +void +ewl_tree2_cb_child_resize(Ewl_Container *c, Ewl_Widget *w __UNUSED__, + int size __UNUSED__, + Ewl_Orientation o __UNUSED__) +{ + Ewl_Tree2 *tree; + int hw, hh, rw, rh; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR("c", c); + DCHECK_TYPE("c", c, EWL_CONTAINER_TYPE); + + tree = EWL_TREE2(c); + + ewl_object_preferred_size_get(EWL_OBJECT(tree->header), &hw, &hh); + ewl_object_preferred_size_get(EWL_OBJECT(tree->rows), &rw, &rh); + + ewl_object_preferred_inner_size_set(EWL_OBJECT(tree), + ((hw > rw) ? hw : rw), hh + rh); DLEAVE_FUNCTION(DLEVEL_STABLE); } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_tree2.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- ewl_tree2.h 6 Feb 2006 03:40:26 -0000 1.14 +++ ewl_tree2.h 6 Feb 2006 04:14:45 -0000 1.15 @@ -98,6 +98,7 @@ Ewl_Container container; /**< Inherit from container. */ Ewl_Widget *header; /**< The tree header */ + Ewl_Widget *rows; /**< Holds the rows of the tree */ Ecore_List *columns; /**< The tree columns. */ void *data; /**< Data provided to the tree */ @@ -146,6 +147,8 @@ */ void ewl_tree2_cb_destroy(Ewl_Widget *w, void *ev, void *data); void ewl_tree2_cb_configure(Ewl_Widget *w, void *ev, void *data); +void ewl_tree2_cb_child_resize(Ewl_Container *c, Ewl_Widget *w, + int size, Ewl_Orientation o); /* * Ewl_Tree2_Column stuff ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs