From: Tae-Hwan Kim Date: Tue, 25 Jun 2013 08:22:22 +0000 (+0900) Subject: [Genlist] Fix Genlist item processing issue X-Git-Tag: accepted/tizen/20130927.071315^2~129 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=54c9cfad6b5a9b8428e6d0fabbdd18534f433de9;p=profile%2Fmobile%2Felementary.git [Genlist] Fix Genlist item processing issue Some applications (ex. music-player) append items on idler or animator or something. In that case, Later queued items can be processed before items previously queued because later items can be processed directly and previous items can be processed on idle enterer. So if there alreday exist queued items, do not process items directly. Change-Id: Idf9331f8190e08094a782c4745a76c10578f20a4 --- diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 32d50b7..ed9aa6f 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -4204,7 +4204,6 @@ _item_queue(Elm_Genlist_Smart_Data *sd, Eina_Bool direct) { Evas_Coord vh; - if (it->item->queued) return; if (sd->queue_idle_enterer) @@ -4217,18 +4216,19 @@ _item_queue(Elm_Genlist_Smart_Data *sd, sd->calc_job = ecore_job_add(_calc_job, sd); sd->s_iface->content_viewport_size_get(ELM_WIDGET_DATA(sd)->obj, NULL, &vh); - if (direct && sd->prev_viewport_w && (sd->processed_sizes < vh)) + if (!sd->queue && direct && sd->prev_viewport_w && + (sd->processed_sizes < vh)) { _item_process(sd, it); sd->processed_sizes += it->item->minh; return; } + it->item->queued = EINA_TRUE; if (cb && !sd->requeued) sd->queue = eina_list_sorted_insert(sd->queue, cb, it); else sd->queue = eina_list_append(sd->queue, it); - } /* If the application wants to know the relative item, use