From: Daniel Juyung Seo Date: Sun, 21 Aug 2011 05:27:19 +0000 (+0000) Subject: elm genlist: Fixed elm_genlist_item_insert_after() bug. Patch by X-Git-Tag: v1.0.0~2187 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fffece8816649d3259cf7812a159fa8f97fee824;p=platform%2Fupstream%2Felementary.git elm genlist: Fixed elm_genlist_item_insert_after() bug. Patch by Chanwook Jung From: 정찬욱 [mailto:joey.jung@samsung.com] Sent: Friday, August 19, 2011 4:40 PM Subject: [E-devel] [Patch] bug in elm_genlist_item_insert_after Dear developers. I found the problem when group item is added using elm_genlist_item_insert_after in genlist. The new group item is refer to the group item list not item list. Therefore it is inserted in the wrong place. I modified that if the new group item is inserted, refer to the last item of the after group item. Thanks. SVN revision: 62645 --- diff --git a/AUTHORS b/AUTHORS index cc75c17..fa8e7dc 100644 --- a/AUTHORS +++ b/AUTHORS @@ -42,3 +42,4 @@ Prince Kumar Dubey Sung W. Park Thierry el Borgi Shilpa Singh +Chanwook Jung diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index b381db4..68df571 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -3485,17 +3485,28 @@ elm_genlist_item_insert_after(Evas_Object *obj, { if ((flags & ELM_GENLIST_ITEM_GROUP) && (after->flags & ELM_GENLIST_ITEM_GROUP)) - wd->group_items = eina_list_append_relative(wd->group_items, it, - after); + { + Elm_Genlist_Item *it2 = NULL; + Eina_List *ll = eina_list_last(after->items); + if (ll) it2 = ll->data; + else it2 = after; + + wd->items = + eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it), + EINA_INLIST_GET(it2)); + it->rel = it2; + wd->group_items = eina_list_append_relative(wd->group_items, it, + after); + } } else { it->parent->items = eina_list_append_relative(it->parent->items, it, after); + wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it), + EINA_INLIST_GET(after)); + it->rel = after; } - wd->items = eina_inlist_append_relative(wd->items, EINA_INLIST_GET(it), - EINA_INLIST_GET(after)); - it->rel = after; it->rel->relcount++; it->before = EINA_FALSE; _item_queue(wd, it);