From b9af203f1e12470408846494abe78c6d769b4dc7 Mon Sep 17 00:00:00 2001 From: seoz 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=utf8 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. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@62645 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- AUTHORS | 1 + src/lib/elm_genlist.c | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) 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); -- 2.7.4