fix genlist item signals on prepend
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 30 May 2012 09:14:45 +0000 (09:14 +0000)
committerTae-Hwan Kim <the81.kim@samsung.com>
Thu, 12 Jul 2012 07:03:43 +0000 (16:03 +0900)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@71547 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

Conflicts:

ChangeLog

Change-Id: I6e5857fd92881a59e098d3630ccee61effc1a74c

src/lib/elm_genlist.c

index 4c7b1e4..81f1bea 100644 (file)
@@ -2197,6 +2197,20 @@ _item_state_realize(Elm_Gen_Item *it,
 }
 
 static void
+_item_order_update(const Eina_Inlist *l, int start)
+{
+   Elm_Gen_Item *it, *it2;
+
+   for (it = ELM_GEN_ITEM_FROM_INLIST(l); l; l = l->next, it = ELM_GEN_ITEM_FROM_INLIST(l))
+     {
+        it->item->order_num_in = start++;
+        _elm_genlist_item_odd_even_update(it);
+        it2 = ELM_GEN_ITEM_FROM_INLIST(l->next);
+        if (it2 && (it->item->order_num_in != it2->item->order_num_in)) return;
+     }
+}
+
+static void
 _item_realize(Elm_Gen_Item *it,
               int           in,
               Eina_Bool     calc)
@@ -2212,8 +2226,7 @@ _item_realize(Elm_Gen_Item *it,
      {
         if (it->item->order_num_in != in)
           {
-             it->item->order_num_in = in;
-             _elm_genlist_item_odd_even_update(it);
+             _item_order_update(EINA_INLIST_GET(it), in);
              _elm_genlist_item_state_update(it, NULL);
              _elm_genlist_item_index_update(it);
           }
@@ -2266,7 +2279,7 @@ _item_realize(Elm_Gen_Item *it,
                                  elm_widget_mirrored_get(WIDGET(it)));
      }
 
-   _elm_genlist_item_odd_even_update(it);
+   _item_order_update(EINA_INLIST_GET(it), in);
 
    treesize = edje_object_data_get(VIEW(it), "treesize");
    if (treesize) tsize = atoi(treesize);