On Sun, Jul 26, 2009 at 05:30:07PM -0700, Enlightenment SVN wrote:
> Log:
>   Remove whitespace.
>   Use E_FREE for things created with E_NEW.
>   Add new function to clear the toolbar.
>   Add new function to return the number of the selected item.

got two patches:
#1: hide eina_list internals by using the eina macros and methods instead
#2: cleanup some duplicate code

If appreciated I can provide more patches like #1 for the other parts
of E.

regards,
Peter

--
With a rubber duck, one's never alone.
                -- "The Hitchhiker's Guide to the Galaxy"
Index: e/src/bin/e_widget_toolbar.c
===================================================================
--- e/src/bin/e_widget_toolbar.c        (revision 41503)
+++ e/src/bin/e_widget_toolbar.c        (patch 1)
@@ -46,7 +46,7 @@
    e_widget_del_hook_set(obj, _e_wid_del_hook);
    e_widget_focus_hook_set(obj, _e_wid_focus_hook);
    e_widget_disable_hook_set(obj, _e_wid_disable_hook);
-   wd = calloc(1, sizeof(E_Widget_Data));
+   wd = E_NEW(E_Widget_Data, 1);
    e_widget_data_set(obj, wd);
    wd->icon_w = icon_w;
    wd->icon_h = icon_h;
@@ -161,9 +161,9 @@
    int i;
 
    wd = e_widget_data_get(obj);
-   for (i = 0, l = wd->items; l; l = l->next, i++)
+   i = 0;
+   EINA_LIST_FOREACH(wd->items, l, it)
      {
-        it = l->data;
         if (i == num)
           {
              if (!it->selected)
@@ -184,6 +184,7 @@
                   edje_object_signal_emit(it->o_icon, "e,state,unselected", 
"e");
                }
           }
+       i++;
      }
 }
 
@@ -293,16 +294,13 @@
 _e_wid_del_hook(Evas_Object *obj)
 {
    E_Widget_Data *wd;
+   Item *it;
    
    wd = e_widget_data_get(obj);
-   while (wd->items)
+   EINA_LIST_FREE(wd->items, it)
      {
-        Item *it;
-        
-        it = wd->items->data;
         evas_object_del(it->o_base);
         evas_object_del(it->o_icon);
-        wd->items = eina_list_remove_list(wd->items, wd->items);
         E_FREE(it);
      }
    E_FREE(wd);
@@ -332,9 +330,8 @@
    it = data;
    if (it->selected) return;
    wd = e_widget_data_get(it->o_toolbar);
-   for (l = wd->items; l; l = l->next)
+   EINA_LIST_FOREACH(wd->items, l, it2)
      {
-        it2 = l->data;
         if (it2->selected)
           {
              it2->selected = EINA_FALSE;
@@ -369,9 +366,8 @@
      {
         if (w != vw) evas_object_resize(wd->o_box, vw, h);
      }
-   for (l = wd->items; l; l = l->next)
+   EINA_LIST_FOREACH(wd->items, l, it)
      {
-        it = l->data;
         if (it->selected)
           {
              _item_show(it);
@@ -385,7 +381,7 @@
 {
    Evas_Event_Key_Down *ev;
    E_Widget_Data *wd;
-   Eina_List *l;
+   Eina_List *l, *l2;
    Item *it = NULL, *it2 = NULL;
    
    ev = event_info;
@@ -395,12 +391,12 @@
        (!strcmp(ev->keyname, "Left")) || (!strcmp(ev->keyname, "KP_Left"))
        )
      {
-        for (l = wd->items; l; l = l->next)
+       EINA_LIST_FOREACH(wd->items, l, it)
           {
-             it = l->data;
              if (it->selected)
                {
-                  if (l->prev) it2 = l->prev->data;
+                 l2 = eina_list_prev(l);
+                  if (l2) it2 = eina_list_data_get(l2);
                   break;
                }
           }
@@ -409,24 +405,23 @@
             (!strcmp(ev->keyname, "Right")) || (!strcmp(ev->keyname, 
"KP_Right"))
        )
      {
-        for (l = wd->items; l; l = l->next)
+       EINA_LIST_FOREACH(wd->items, l, it)
           {
-             it = l->data;
              if (it->selected)
                {
-                  if (l->next) it2 = l->next->data;
+                 l2 = eina_list_next(l);
+                  if (l2) it2 = eina_list_data_get(l2);
                   break;
                }
           }
      }
    else if ((!strcmp(ev->keyname, "Home")) || (!strcmp(ev->keyname, 
"KP_Home")))
      {
-       for (l = wd->items; l; l = l->next)
+       EINA_LIST_FOREACH(wd->items, l, it)
          {
-            it = l->data;
             if (it->selected)
               {
-                 it2 = wd->items->data;
+                 it2 = eina_list_data_get(wd->items);
                  break;
               }
          }
@@ -438,7 +433,7 @@
             it = l->data;
             if (it->selected)
               {
-                 it2 = eina_list_last(wd->items)->data;
+                 it2 = eina_list_data_get(eina_list_last(wd->items));
                  break;
               }
          }
@@ -465,12 +460,12 @@
    if (e_widget_focus_get(obj))
      {
         edje_object_signal_emit(wd->o_base, "e,state,focused", "e");
-        evas_object_focus_set(obj, 1);
+        evas_object_focus_set(obj, EINA_TRUE);
      }
    else
      {
         edje_object_signal_emit(wd->o_base, "e,state,unfocused", "e");
-        evas_object_focus_set(obj, 0);
+        evas_object_focus_set(obj, EINA_FALSE);
      }
 }
 
Index: e/src/bin/e_widget_toolbar.c
===================================================================
--- e/src/bin/e_widget_toolbar.c        (revision 41503)
+++ e/src/bin/e_widget_toolbar.c        (patch 2)
@@ -30,6 +30,8 @@
 static void _e_wid_cb_scrollframe_resize(void *data, Evas *e, Evas_Object 
*obj, void *event_info);
 static void _e_wid_cb_key_down(void *data, Evas *evas, Evas_Object *obj, void 
*event_info);
 static void _item_show(Item *it);
+static void _item_select(Item *it);
+static void _item_unselect(Item *it);
 
 /* local subsystem functions */
 
@@ -166,23 +168,11 @@
         it = l->data;
         if (i == num)
           {
-             if (!it->selected)
-               {
-                  it->selected = EINA_TRUE;
-                  edje_object_signal_emit(it->o_base, "e,state,selected", "e");
-                  edje_object_signal_emit(it->o_icon, "e,state,selected", "e");
-                  _item_show(it);
-                  if (it->func) it->func(it->data1, it->data2);
-               }
+             if (!it->selected) _item_select(it);
           }
         else
           {
-             if (it->selected)
-               {
-                  it->selected = EINA_FALSE;
-                  edje_object_signal_emit(it->o_base, "e,state,unselected", 
"e");
-                  edje_object_signal_emit(it->o_icon, "e,state,unselected", 
"e");
-               }
+             if (it->selected) _item_unselect(it);
           }
      }
 }
@@ -337,17 +327,11 @@
         it2 = l->data;
         if (it2->selected)
           {
-             it2->selected = EINA_FALSE;
-             edje_object_signal_emit(it2->o_base, "e,state,unselected", "e");
-             edje_object_signal_emit(it2->o_icon, "e,state,unselected", "e");
+             _item_unselect(it2);
              break;
           }
      }
-   it->selected = EINA_TRUE;
-   edje_object_signal_emit(it->o_base, "e,state,selected", "e");
-   edje_object_signal_emit(it->o_icon, "e,state,selected", "e");
-   _item_show(it);
-   if (it->func) it->func(it->data1, it->data2);
+   _item_select(it);
 }
 
 static void
@@ -445,14 +429,8 @@
      }
    if ((it) && (it2) && (it != it2))
      {
-        it->selected = EINA_FALSE;
-        edje_object_signal_emit(it->o_base, "e,state,unselected", "e");
-        edje_object_signal_emit(it->o_icon, "e,state,unselected", "e");
-        it2->selected = EINA_TRUE;
-        edje_object_signal_emit(it2->o_base, "e,state,selected", "e");
-        edje_object_signal_emit(it2->o_icon, "e,state,selected", "e");
-        _item_show(it2);
-        if (it2->func) it->func(it2->data1, it2->data2);
+       _item_unselect(it);
+       _item_select(it2);
      }
 }
 
@@ -492,3 +470,20 @@
    e_scrollframe_child_region_show(wd->o_base, x - bx, y - by, w, h);
 }
 
+static void
+_item_select(Item *it)
+{
+   it->selected = EINA_TRUE;
+   edje_object_signal_emit(it->o_base, "e,state,selected", "e");
+   edje_object_signal_emit(it->o_icon, "e,state,selected", "e");
+   _item_show(it);
+   if (it->func) it->func(it->data1, it->data2);
+}
+
+static void
+_item_unselect(Item *it)
+{
+   it->selected = EINA_FALSE;
+   edje_object_signal_emit(it->o_base, "e,state,unselected", "e");
+   edje_object_signal_emit(it->o_icon, "e,state,unselected", "e");
+}

Attachment: pgp5WeYGDs8tZ.pgp
Description: PGP signature

------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to