From 5814a8b7cb0e0b092c848dacb2029f703bc4174f Mon Sep 17 00:00:00 2001 From: Daniel Juyung Seo Date: Sun, 21 Aug 2011 05:27:19 +0000 Subject: [PATCH] elm genlist: Fixed elm_genlist_item_insert_after() bug. Patch by Chanwook Jung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- legacy/elementary/AUTHORS | 1 + legacy/elementary/src/lib/elm_genlist.c | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/legacy/elementary/AUTHORS b/legacy/elementary/AUTHORS index cc75c1711e..fa8e7dc5cb 100644 --- a/legacy/elementary/AUTHORS +++ b/legacy/elementary/AUTHORS @@ -42,3 +42,4 @@ Prince Kumar Dubey Sung W. Park Thierry el Borgi Shilpa Singh +Chanwook Jung diff --git a/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index b381db4695..68df571e42 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/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);