From 207aaa411ece9ffa2aef12e807a4c74fa3b8bc22 Mon Sep 17 00:00:00 2001 From: discomfitor Date: Wed, 30 May 2012 09:14:45 +0000 Subject: [PATCH] fix genlist item signals on prepend 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 | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 4c7b1e4..81f1bea 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -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); -- 2.7.4