discomfitor pushed a commit to branch master.

commit d9b5a6b82f50637453d7d102e46324e8dd870114
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Jun 17 08:21:01 2013 +0100

    convert ibar icons list to use inlist
---
 src/modules/ibar/e_mod_main.c | 97 +++++++++++++++++++------------------------
 1 file changed, 43 insertions(+), 54 deletions(-)

diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index fbb6216..787e5a0 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -54,7 +54,8 @@ struct _IBar
    Evas_Object *o_drop_over, *o_empty;
    IBar_Icon   *ic_drop_before;
    int          drop_before;
-   Eina_List   *icons;
+   Eina_Inlist  *icons;
+   unsigned int icons_count;
    IBar_Order  *io;
    Evas_Coord   dnd_x, dnd_y;
    Eina_Bool    focused : 1;
@@ -62,6 +63,7 @@ struct _IBar
 
 struct _IBar_Icon
 {
+   EINA_INLIST;
    IBar            *ibar;
    Evas_Object     *o_holder, *o_icon;
    Evas_Object     *o_holder2, *o_icon2;
@@ -264,7 +266,7 @@ _gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient)
       case E_GADCON_ORIENT_CORNER_BL:
       case E_GADCON_ORIENT_CORNER_BR:
         _ibar_orient_set(inst->ibar, 1);
-        e_gadcon_client_aspect_set(gcc, eina_list_count(inst->ibar->icons) * 
16, 16);
+        e_gadcon_client_aspect_set(gcc, inst->ibar->icons_count * 16, 16);
         break;
 
       case E_GADCON_ORIENT_VERT:
@@ -275,7 +277,7 @@ _gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient)
       case E_GADCON_ORIENT_CORNER_LB:
       case E_GADCON_ORIENT_CORNER_RB:
         _ibar_orient_set(inst->ibar, 0);
-        e_gadcon_client_aspect_set(gcc, 16, eina_list_count(inst->ibar->icons) 
* 16);
+        e_gadcon_client_aspect_set(gcc, 16, inst->ibar->icons_count * 16);
         break;
 
       default:
@@ -476,7 +478,8 @@ _ibar_fill(IBar *b)
                     e_exec_instance_watcher_add(exe, _ibar_instance_watch, ic);
                   _ibar_icon_signal_emit(ic, "e,state,on", "e");
                }
-             b->icons = eina_list_append(b->icons, ic);
+             b->icons = eina_inlist_append(b->icons, EINA_INLIST_GET(ic));
+             b->icons_count++;
              e_box_pack_end(b->o_box, ic->o_holder);
           }
      }
@@ -487,10 +490,8 @@ _ibar_fill(IBar *b)
 static void
 _ibar_empty(IBar *b)
 {
-   IBar_Icon *ic;
-
-   EINA_LIST_FREE(b->icons, ic)
-     _ibar_icon_free(ic);
+   while (b->icons)
+     _ibar_icon_free((IBar_Icon*)b->icons);
 
    _ibar_empty_handle(b);
 }
@@ -505,7 +506,6 @@ _ibar_orient_set(IBar *b, int horizontal)
 static void
 _ibar_resize_handle(IBar *b)
 {
-   const Eina_List *l;
    IBar_Icon *ic;
    Evas_Coord w, h;
 
@@ -515,7 +515,7 @@ _ibar_resize_handle(IBar *b)
    else
      h = w;
    e_box_freeze(b->o_box);
-   EINA_LIST_FOREACH(b->icons, l, ic)
+   EINA_INLIST_FOREACH(b->icons, ic)
      {
         e_box_pack_options_set(ic->o_holder,
                                1, 1, /* fill */
@@ -560,7 +560,6 @@ _ibar_config_update(Config_Item *ci)
 {
    const Eina_List *l;
    Instance *inst;
-   const Eina_List *i;
    IBar_Icon *ic;
 
    EINA_LIST_FOREACH(ibar_config->instances, l, inst)
@@ -579,7 +578,7 @@ _ibar_config_update(Config_Item *ci)
         _gc_orient(inst->gcc, -1);
      }
    EINA_LIST_FOREACH(ibar_config->instances, l, inst)
-     EINA_LIST_FOREACH(inst->ibar->icons, i, ic)
+     EINA_INLIST_FOREACH(inst->ibar->icons, ic)
           {
              switch (ci->eap_label)
                {
@@ -604,10 +603,9 @@ _ibar_config_update(Config_Item *ci)
 static IBar_Icon *
 _ibar_icon_at_coord(IBar *b, Evas_Coord x, Evas_Coord y)
 {
-   const Eina_List *l;
    IBar_Icon *ic;
 
-   EINA_LIST_FOREACH(b->icons, l, ic)
+   EINA_INLIST_FOREACH(b->icons, ic)
      {
         Evas_Coord dx, dy, dw, dh;
 
@@ -661,9 +659,10 @@ static void
 _ibar_icon_free(IBar_Icon *ic)
 {
    E_Exec_Instance *inst;
-   
-   if (ic->reset_timer) ecore_timer_del(ic->reset_timer);
-   ic->reset_timer = NULL;
+
+   ic->ibar->icons = eina_inlist_remove(ic->ibar->icons, EINA_INLIST_GET(ic));
+   ic->ibar->icons_count--;
+   E_FREE_FUNC(ic->reset_timer, ecore_timer_del);
    ic->exe_current = NULL;
    if (ic->ibar->ic_drop_before == ic)
      ic->ibar->ic_drop_before = NULL;
@@ -799,16 +798,14 @@ _ibar_cb_menu_icon_properties(void *data, E_Menu *m 
__UNUSED__, E_Menu_Item *mi
 static void
 _ibar_cb_menu_icon_remove(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi 
__UNUSED__)
 {
-   IBar_Icon *ic;
-   E_Gadcon_Client *gc;
+   IBar_Icon *ic = data;
+   IBar *i;
 
-   ic = data;
-   ic->ibar->icons = eina_list_remove(ic->ibar->icons, ic);
-   _ibar_resize_handle(ic->ibar);
-   gc = ic->ibar->inst->gcc;
-   _gc_orient(gc, -1);
-   e_order_remove(ic->ibar->io->eo, ic->app);
+   i = ic->ibar;
+   e_order_remove(i->io->eo, ic->app);
    _ibar_icon_free(ic);
+   _ibar_resize_handle(i);
+   _gc_orient(i->inst->gcc, -1);
 }
 
 static void
@@ -1125,12 +1122,12 @@ _ibar_cb_icon_wheel(void *data, Evas *e __UNUSED__, 
Evas_Object *obj __UNUSED__,
    Evas_Event_Mouse_Wheel *ev;
    E_Exec_Instance *exe;
    IBar_Icon *ic;
-
-   ev = event_info;
-   ic = data;
+
+   ev = event_info;
+   ic = data;
 
    if (!ic->exes) return;
-
+
    if (!ic->exe_current)
      ic->exe_current = eina_list_nth_list(ic->exes, 0);
 
@@ -1255,8 +1252,8 @@ _ibar_cb_icon_mouse_move(void *data, Evas *e __UNUSED__, 
Evas_Object *obj __UNUS
         Evas_Object *o;
         Evas_Coord x, y, w, h;
         unsigned int size;
+        IBar *i;
         const char *drag_types[] = { "enlightenment/desktop" };
-        E_Gadcon_Client *gc;
 
         ic->drag.dnd = 1;
         ic->drag.start = 0;
@@ -1274,12 +1271,11 @@ _ibar_cb_icon_mouse_move(void *data, Evas *e 
__UNUSED__, Evas_Object *obj __UNUS
 
         e_drag_resize(d, w, h);
         e_drag_start(d, ic->drag.x, ic->drag.y);
-        ic->ibar->icons = eina_list_remove(ic->ibar->icons, ic);
-        _ibar_resize_handle(ic->ibar);
-        gc = ic->ibar->inst->gcc;
-        _gc_orient(gc, -1);
-        e_order_remove(ic->ibar->io->eo, ic->app);
+        i = ic->ibar;
+        e_order_remove(i->io->eo, ic->app);
         _ibar_icon_free(ic);
+        _ibar_resize_handle(i);
+        _gc_orient(i->inst->gcc, -1);
      }
 }
 
@@ -1485,15 +1481,14 @@ _ibar_inst_cb_drop(void *data, const char *type, void 
*event_info)
         /* Add new eapp before this icon */
         if (!inst->ibar->drop_before)
           {
-             const Eina_List *l;
              IBar_Icon *ic2;
 
-             EINA_LIST_FOREACH(inst->ibar->icons, l, ic2)
+             EINA_INLIST_FOREACH(inst->ibar->icons, ic2)
                {
                   if (ic2 == ic)
                     {
-                       if (l->next)
-                         ic = l->next->data;
+                       if (EINA_INLIST_GET(ic2)->next)
+                         ic = (IBar_Icon*)EINA_INLIST_GET(ic2)->next;
                        else
                          ic = NULL;
                        break;
@@ -1683,11 +1678,10 @@ static void
 _ibar_focus(IBar *b)
 {
    IBar_Icon *ic;
-   Eina_List *l;
    
    if (b->focused) return;
    b->focused = EINA_TRUE;
-   EINA_LIST_FOREACH(b->icons, l, ic)
+   EINA_INLIST_FOREACH(b->icons, ic)
      {
         if (ic->focused)
           {
@@ -1696,18 +1690,17 @@ _ibar_focus(IBar *b)
           }
      }
    if (b->icons)
-     _ibar_icon_unfocus_focus(NULL, b->icons->data);
+     _ibar_icon_unfocus_focus(NULL, (IBar_Icon*)b->icons);
 }
 
 static void
 _ibar_unfocus(IBar *b)
 {
    IBar_Icon *ic;
-   Eina_List *l;
 
    if (!b->focused) return;
    b->focused = EINA_FALSE;
-   EINA_LIST_FOREACH(b->icons, l, ic)
+   EINA_INLIST_FOREACH(b->icons, ic)
      {
         if (ic->focused)
           {
@@ -1721,11 +1714,10 @@ static void
 _ibar_focus_next(IBar *b)
 {
    IBar_Icon *ic, *ic1 = NULL, *ic2 = NULL;
-   Eina_List *l;
    
    if (!b->focused) return;
    if (!b->icons) return;
-   EINA_LIST_FOREACH(b->icons, l, ic)
+   EINA_INLIST_FOREACH(b->icons, ic)
      {
         if (!ic1)
           {
@@ -1738,7 +1730,7 @@ _ibar_focus_next(IBar *b)
           }
      }
    // wrap to start
-   if ((ic1) && (!ic2)) ic2 = b->icons->data;
+   if ((ic1) && (!ic2)) ic2 = (IBar_Icon*)b->icons;
    if ((ic1) && (ic2) && (ic1 != ic2))
      _ibar_icon_unfocus_focus(ic1, ic2);
 }
@@ -1747,11 +1739,10 @@ static void
 _ibar_focus_prev(IBar *b)
 {
    IBar_Icon *ic, *ic1 = NULL, *ic2 = NULL;
-   Eina_List *l;
    
    if (!b->focused) return;
    if (!b->icons) return;
-   EINA_LIST_FOREACH(b->icons, l, ic)
+   EINA_INLIST_FOREACH(b->icons, ic)
      {
         if (ic->focused)
           {
@@ -1761,7 +1752,7 @@ _ibar_focus_prev(IBar *b)
         ic2 = ic;
      }
    // wrap to end
-   if ((ic1) && (!ic2)) ic2 = eina_list_last_data_get(b->icons);
+   if ((ic1) && (!ic2)) ic2 = (IBar_Icon*)b->icons;
    if ((ic1) && (ic2) && (ic1 != ic2))
      _ibar_icon_unfocus_focus(ic1, ic2);
 }
@@ -1770,10 +1761,9 @@ static void
 _ibar_focus_launch(IBar *b)
 {
    IBar_Icon *ic;
-   Eina_List *l;
    
    if (!b->focused) return;
-   EINA_LIST_FOREACH(b->icons, l, ic)
+   EINA_INLIST_FOREACH(b->icons, ic)
      {
         if (ic->focused)
           {
@@ -2095,10 +2085,9 @@ _ibar_cb_config_icons(__UNUSED__ void *data, __UNUSED__ 
int ev_type, __UNUSED__
 
    EINA_LIST_FOREACH(ibar_config->instances, l, inst)
      {
-        const Eina_List *l2;
         IBar_Icon *icon;
 
-        EINA_LIST_FOREACH(inst->ibar->icons, l2, icon)
+        EINA_INLIST_FOREACH(inst->ibar->icons, icon)
           _ibar_icon_fill(icon);
      }
    return ECORE_CALLBACK_PASS_ON;

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to