From 858244d77c324840145f25f76fab100beb68623f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 30 May 2012 09:14:45 +0000 Subject: [PATCH] fix genlist item signals on prepend SVN revision: 71547 --- legacy/elementary/ChangeLog | 4 ++++ legacy/elementary/src/lib/elm_genlist.c | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/legacy/elementary/ChangeLog b/legacy/elementary/ChangeLog index 73e6c508f6..0c3d73a2b5 100644 --- a/legacy/elementary/ChangeLog +++ b/legacy/elementary/ChangeLog @@ -120,3 +120,7 @@ * Prepending items to a genlist no longer causes the selected item to scroll out of the viewport * Collapsing tree items in genlist now animate properly + +2012-05-30 Mike Blumenkrantz + + * Fix even/odd signals for genlist items diff --git a/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index b9210d4229..f880d21d05 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/src/lib/elm_genlist.c @@ -2055,6 +2055,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, @@ -2071,8 +2085,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); } @@ -2125,7 +2138,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);