Enlightenment CVS committal

Author  : moom16
Project : e17
Module  : proto

Dir     : e17/proto/etk/src/lib


Modified Files:
        etk_tree.c etk_tree.h 


Log Message:
* The tree now uses evas_list instead of ecore_list


===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- etk_tree.c  29 Oct 2005 19:57:21 -0000      1.8
+++ etk_tree.c  30 Oct 2005 00:07:45 -0000      1.9
@@ -4,7 +4,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <math.h>
-#include <Evas.h>
 #include <Edje.h>
 #include "etk_button.h"
 #include "etk_toplevel_widget.h"
@@ -101,7 +100,7 @@
 static void _etk_tree_header_mouse_out_cb(Etk_Object *object, void *event, 
void *data);
 
 static void _etk_tree_update(Etk_Tree *tree);
-static int _etk_tree_rows_draw(Etk_Tree *tree, Etk_Tree_Node *node, Ecore_List 
*items_objects,
+static int _etk_tree_rows_draw(Etk_Tree *tree, Etk_Tree_Node *node, Evas_List 
**items_objects,
    int x, int w, int h, int xoffset, int yoffset, int first_row_id, int 
first_row_color);
 static Etk_Tree_Row *_etk_tree_row_new_valist(Etk_Tree *tree, Etk_Tree_Node 
*node, va_list args);
 static Etk_Tree_Item_Objects *_etk_tree_item_objects_new(Etk_Tree *tree);
@@ -600,14 +599,17 @@
  */
 void etk_tree_select_all(Etk_Tree *tree)
 {
+   Evas_List *l;
    Etk_Tree_Row *row;
 
    if (!tree || (tree->mode != ETK_TREE_MODE_LIST) || !tree->multiple_select)
       return;
 
-   ecore_list_goto_first(tree->root.child_rows);
-   while ((row = ecore_list_next(tree->root.child_rows)))
+   for (l = tree->root.child_rows; l; l = l->next)
+   {
+      row = l->data;
       row->node.selected = TRUE;
+   }
    etk_signal_emit(_etk_tree_signals[ETK_TREE_SELECT_ALL_SIGNAL], 
ETK_OBJECT(tree), NULL);
    etk_widget_redraw_queue(ETK_WIDGET(tree));
 }
@@ -628,11 +630,14 @@
    }
    if (tree->mode == ETK_TREE_MODE_LIST && tree->multiple_select)
    {
+      Evas_List *l;
       Etk_Tree_Row *row;
 
-      ecore_list_goto_first(tree->root.child_rows);
-      while ((row = ecore_list_next(tree->root.child_rows)))
+      for (l = tree->root.child_rows; l; l = l->next)
+      {
+         row = l->data;
          row->node.selected = FALSE;
+      }
       etk_signal_emit(_etk_tree_signals[ETK_TREE_UNSELECT_ALL_SIGNAL], 
ETK_OBJECT(tree), NULL);
    }
    etk_widget_redraw_queue(ETK_WIDGET(tree));
@@ -686,11 +691,16 @@
  */
 void etk_tree_row_del(Etk_Tree_Row *row)
 {
+   Evas_List *l;
+
    if (!row)
       return;
 
-   if (ecore_list_goto(row->node.parent->child_rows, row))
-      ecore_list_remove_destroy(row->node.parent->child_rows);
+   if ((l = evas_list_find_list(row->node.parent->child_rows, row)))
+   {
+      _etk_tree_row_free(l->data);
+      row->node.parent->child_rows = 
evas_list_remove_list(row->node.parent->child_rows, l);
+   }
    
    if (!row->tree->frozen)
       etk_widget_redraw_queue(ETK_WIDGET(row->tree));
@@ -705,9 +715,11 @@
    if (!tree)
       return;
 
-   ecore_list_goto_first(tree->root.child_rows);
-   while (!ecore_list_is_empty(tree->root.child_rows))
-      ecore_list_remove_destroy(tree->root.child_rows);
+   while (tree->root.child_rows)
+   {
+      _etk_tree_row_free(tree->root.child_rows->data);
+      tree->root.child_rows = evas_list_remove_list(tree->root.child_rows, 
tree->root.child_rows);
+   }
    
    if (!tree->frozen)
       etk_widget_redraw_queue(ETK_WIDGET(tree));
@@ -971,12 +983,12 @@
 /**
  * @brief Gets all the selected rows of the tree
  * @param tree a tree
- * @return Returns an Ecore_List * containing the selected rows of the tree
- * @warning The returned Ecore_List * should be freed with @a 
ecore_list_destroy()
+ * @return Returns an Evas_List * containing the selected rows of the tree
+ * @warning The returned Evas_List * should be freed with @a evas_list_free()
  */
-Ecore_List *etk_tree_selected_rows_get(Etk_Tree *tree)
+Evas_List *etk_tree_selected_rows_get(Etk_Tree *tree)
 {
-   Ecore_List *selected_rows;
+   Evas_List *selected_rows = NULL;
 
    if (!tree)
       return NULL;
@@ -986,23 +998,22 @@
       if (!tree->last_selected || !tree->last_selected->selected)
          return NULL;
       
-      selected_rows = ecore_list_new();
-      ecore_list_append(selected_rows, tree->last_selected);
-      return selected_rows;
+      selected_rows = evas_list_append(selected_rows, tree->last_selected);
    }
    else
    {
+      Evas_List *l;
       Etk_Tree_Row *row;
 
-      selected_rows = ecore_list_new();
-      ecore_list_goto_first(tree->root.child_rows);
-      while ((row = ecore_list_next(tree->root.child_rows)))
+      for (l = tree->root.child_rows; l; l = l->next)
       {
+         row = l->data;
          if (row->node.selected)
-            ecore_list_append(selected_rows, row);
+            selected_rows = evas_list_append(selected_rows, row);
       }
-      return selected_rows;
    }
+
+   return selected_rows;
 }
 
 /**
@@ -1099,7 +1110,7 @@
    num_visible_items = ceil((float)h / tree->item_height) + 1;
    if (num_visible_items < 0)
       num_visible_items = 0;
-   num_item_to_add = num_visible_items - ecore_list_nodes(tree->items_objects);
+   num_item_to_add = num_visible_items - evas_list_count(tree->items_objects);
 
    if (num_item_to_add > 0)
    {
@@ -1109,17 +1120,17 @@
       {
          if (!(item_objects = _etk_tree_item_objects_new(tree)))
             break;
-         ecore_list_append(tree->items_objects, item_objects);
+         tree->items_objects = evas_list_append(tree->items_objects, 
item_objects);
       }
    }
    else if (num_item_to_add < 0)
    {
       for (i = 0; i < -num_item_to_add; i++)
       {
-         if (!ecore_list_goto_last(tree->items_objects))
+         if (!tree->items_objects)
             break;
-         _etk_tree_item_objects_free(ecore_list_current(tree->items_objects), 
tree);
-         ecore_list_remove(tree->items_objects);
+         _etk_tree_item_objects_free(tree->items_objects->data, tree);
+         tree->items_objects = evas_list_remove(tree->items_objects, 
tree->items_objects);
       }
    }
 
@@ -1153,8 +1164,7 @@
    tree->headers_visible = TRUE;
 
    tree->root.parent = NULL;
-   tree->root.child_rows = ecore_list_new();
-   ecore_list_set_free_cb(tree->root.child_rows, 
ECORE_FREE_CB(_etk_tree_row_free));
+   tree->root.child_rows = NULL;
    tree->root.num_visible_children = 0;
    tree->root.num_parent_children = 0;
    tree->root.expanded = TRUE;
@@ -1162,7 +1172,7 @@
    tree->item_height = -1;
    tree->image_height = -1;
    tree->expander_size = -1;
-   tree->items_objects = ecore_list_new();
+   tree->items_objects = NULL;
 
    tree->built = FALSE;
    tree->frozen = FALSE;
@@ -1177,17 +1187,18 @@
 /* Destroys the tree */
 static void _etk_tree_destructor(Etk_Tree *tree)
 {
-   Etk_Tree_Item_Objects *item_objects;
+   Evas_List *l;
    int i;
 
    if (!tree)
       return;
 
-   ecore_list_goto_first(tree->items_objects);
-   while ((item_objects = ecore_list_next(tree->items_objects)))
-      _etk_tree_item_objects_free(item_objects, tree);
-   ecore_list_destroy(tree->items_objects);
-   ecore_list_destroy(tree->root.child_rows);
+   for (l = tree->items_objects; l; l = l->next)
+      _etk_tree_item_objects_free(l->data, tree);
+   tree->items_objects = evas_list_free(tree->items_objects);
+
+   etk_tree_clear(tree);
+
    for (i = 0; i < tree->num_cols; i++)
    {
       if (tree->columns[i])
@@ -1718,6 +1729,7 @@
 /* Updates the tree */
 static void _etk_tree_update(Etk_Tree *tree)
 {
+   Evas_List *l;
    Etk_Tree_Item_Objects *item_objects;
    int invisible_height, offset, first_visible_nth, delta;
    int x, y, w, h;
@@ -1768,11 +1780,12 @@
    first_visible_nth = offset / tree->item_height;
    delta = offset - (first_visible_nth * tree->item_height);
 
-   ecore_list_goto_first(tree->items_objects);
-   _etk_tree_rows_draw(tree, &tree->root, tree->items_objects, x, w, h, 0, y - 
delta, first_visible_nth, (first_visible_nth % 2));
+   l = tree->items_objects;
+   _etk_tree_rows_draw(tree, &tree->root, &l, x, w, h, 0, y - delta, 
first_visible_nth, (first_visible_nth % 2));
 
-   while ((item_objects = ecore_list_next(tree->items_objects)))
+   for (; l; l = l->next)
    {
+      item_objects = l->data;
       evas_object_hide(item_objects->rect_bg);
       evas_object_hide(item_objects->expander);
       for (i = 0; i < tree->num_cols; i++)
@@ -1786,13 +1799,14 @@
 }
 
 /* Draws recursively a list of rows and their children */
-static int _etk_tree_rows_draw(Etk_Tree *tree, Etk_Tree_Node *node, Ecore_List 
*items_objects,
+static int _etk_tree_rows_draw(Etk_Tree *tree, Etk_Tree_Node *node, Evas_List 
**items_objects,
    int x, int w, int h, int xoffset, int yoffset, int first_row_id, int 
first_row_color)
 {
    Etk_Tree_Row *row;
    Etk_Tree_Item_Objects *item_objects;
    int i, j;
    int first_col_offset;
+   Evas_List *l;
 
    if (!tree || !node || !items_objects)
       return 0;
@@ -1800,15 +1814,16 @@
    first_col_offset = xoffset + ((node->num_parent_children > 0) ? 
tree->expander_size : 4) + 4;
 
    i = 0;
-   ecore_list_goto_first(node->child_rows);
-   while ((row = ecore_list_next(node->child_rows)))
+   for (l = node->child_rows; l; l = l->next)
    {
+      row = l->data;
       if (first_row_id <= 0)
       {
          int item_y;
    
-         if (!(item_objects = ecore_list_next(items_objects)))
+         if (!(*items_objects) || !(item_objects = (*items_objects)->data))
             break;
+         *items_objects = (*items_objects)->next;
    
          item_y = yoffset + i * tree->item_height;
          evas_object_move(item_objects->rect_bg, x, item_y);
@@ -1827,7 +1842,7 @@
          
          if (node->num_parent_children > 0)
          {
-            if (row->node.child_rows && ecore_list_nodes(row->node.child_rows) 
> 0)
+            if (evas_list_count(row->node.child_rows) > 0)
             {
                evas_object_move(item_objects->expander, xoffset + x, item_y + 
(tree->item_height - tree->expander_size + 1) / 2);
                evas_object_resize(item_objects->expander, tree->expander_size, 
tree->expander_size);
@@ -1928,7 +1943,7 @@
       }
       first_row_id--;
 
-      if (row->node.child_rows && row->node.expanded && 
ecore_list_goto_first(row->node.child_rows))
+      if (row->node.child_rows && row->node.expanded)
       {
          i += _etk_tree_rows_draw(tree, &row->node, items_objects, x, w, h, 
first_col_offset, yoffset + i * tree->item_height, first_row_id, 
(first_row_color + i) % 2);
          first_row_id -= row->node.num_visible_children;
@@ -1971,12 +1986,7 @@
    if ((n = new_row->node.parent) && (n = n->parent))
       n->num_parent_children++;
 
-   if (!node->child_rows)
-   {
-      node->child_rows = ecore_list_new();
-      ecore_list_set_free_cb(node->child_rows, 
ECORE_FREE_CB(_etk_tree_row_free));
-   }
-   ecore_list_append(node->child_rows, new_row);
+   node->child_rows = evas_list_append(node->child_rows, new_row);
 
    return new_row;
 }
@@ -2111,8 +2121,11 @@
       free(row->cells);
    }
 
-   if (row->node.child_rows)
-      ecore_list_destroy(row->node.child_rows);
+   while (row->node.child_rows)
+   {
+      _etk_tree_row_free(row->node.child_rows->data);
+      row->node.child_rows = evas_list_remove_list(row->node.child_rows, 
row->node.child_rows);
+   }
 
    for (n = row->node.parent; n; n = n->parent)
    {
@@ -2216,11 +2229,12 @@
          else
          {
             Etk_Bool selected = FALSE;
+            Evas_List *l;
             Etk_Tree_Row *row;
 
-            ecore_list_goto_first(tree->root.child_rows);
-            while ((row = ecore_list_next(tree->root.child_rows)))
+            for (l = tree->root.child_rows; l; l = l->next)
             {
+               row = l->data;
                if (&row->node == tree->last_selected || &row->node == node)
                {
                   row->node.selected = TRUE;
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- etk_tree.h  23 Oct 2005 23:27:51 -0000      1.6
+++ etk_tree.h  30 Oct 2005 00:07:45 -0000      1.7
@@ -3,7 +3,7 @@
 #define _ETK_TREE_H_
 
 #include "etk_container.h"
-#include <Ecore_Data.h>
+#include <Evas.h>
 #include <stdarg.h>
 #include "etk_types.h"
 
@@ -57,7 +57,7 @@
 {
    Etk_Tree_Row *row;
    Etk_Tree_Node *parent;
-   Ecore_List *child_rows;
+   Evas_List *child_rows;
    int num_visible_children;
    int num_parent_children;
    Etk_Bool expanded;
@@ -78,7 +78,6 @@
 
    int num_cols;
    Etk_Tree_Col **columns;
-   Ecore_List *cols_objects;
    Etk_Tree_Col *column_to_resize;
    Etk_Bool resize_pointer_shown;
    Etk_Bool headers_visible;
@@ -87,7 +86,7 @@
    Etk_Tree_Node *last_selected;
 
    Evas_Object *clip;
-   Ecore_List *items_objects;
+   Evas_List *items_objects;
 
    Etk_Tree_Mode mode;
    Etk_Bool multiple_select;
@@ -218,7 +217,7 @@
 void etk_tree_row_select(Etk_Tree_Row *row);
 void etk_tree_row_unselect(Etk_Tree_Row *row);
 Etk_Tree_Row *etk_tree_selected_row_get(Etk_Tree *tree);
-Ecore_List *etk_tree_selected_rows_get(Etk_Tree *tree);
+Evas_List *etk_tree_selected_rows_get(Etk_Tree *tree);
 void etk_tree_row_expand(Etk_Tree_Row *row);
 void etk_tree_row_collapse(Etk_Tree_Row *row);
 




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course
Free Certification Exam for All Training Attendees Through End of 2005
Visit http://www.jboss.com/services/certification for more information
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to