From c9060ca997363dbf80f1b6a362c0c5a7db0e14c7 Mon Sep 17 00:00:00 2001 From: SangHyeon Jade Lee Date: Wed, 19 Sep 2018 09:35:06 +0900 Subject: [PATCH] elm_genlist: item scroll show sould be processed after block calculation Summary: there are buggy actions in the item show api, when the list is launched, scroll to far distance item. the reason is item_scroll is called before it's block is fully calculated in calc_job(). the origin patch of cause the issue is f6b66cc1d3b94bedc25cb10bd5317855954af973 by raster in 28 Nov, 2013 but we already do some extra works in calc_job(), so the code is not necessarily called in queue_process(). more detail descriptions : mainly this caused by block width size, so the normal case block width is zero, and item_scroll() will be dismissed, and deferred action in calc_job(), but in issue case, block width is already been set, so it can scroll the item directly though they aren't properly calculated yet. most cases block was generated in the same queue processing so width size is not exist, but in issue cases, they re-using the block which was already been generated by previous queue processing, so the width size is already exist, but height is not properly calculated yet. we could move the block height calculation and min/max calculation in the queue processing, but I'm afraid to face side effect, so removing item_scroll() call is best option that I got. Test Plan: I'll upload some sample file my_genlist_example_4.c, so please do a test with this. issue is reproduced very rarely, but I could see the issue within 20 times try. {F3300793} Reviewers: raster, eagleeye, Hermet, singh.amitesh, #reviewers Reviewed By: Hermet, #reviewers Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D6952 --- src/lib/elementary/elm_genlist.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 974cf7ea93..c6469d7456 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -4787,7 +4787,6 @@ _queue_process(Elm_Genlist_Data *sd) if ((t - t0) > (ecore_animator_frametime_get())) break; } } - if (!sd->queue) _item_scroll(sd); return n; }