From: Hosang Kim Date: Wed, 19 Jun 2013 06:10:06 +0000 (+0900) Subject: Better logic for elm_scroller_current_page_get() while scrolling/dragging. X-Git-Tag: accepted/tizen/20130927.071315^2~148 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=14eb48ee43310d6487a3539eac0705880943aa7d;p=profile%2Fmobile%2Felementary.git Better logic for elm_scroller_current_page_get() while scrolling/dragging. We still report the topmost/leftmost page, but DURING animations we return which of the competing pages on the top, left edge get the majority of their regions in the viewport. --- diff --git a/src/lib/elm_interface_scrollable.c b/src/lib/elm_interface_scrollable.c index ed6eb32..aea6abf 100644 --- a/src/lib/elm_interface_scrollable.c +++ b/src/lib/elm_interface_scrollable.c @@ -3969,14 +3969,28 @@ _elm_scroll_current_page_get(const Evas_Object *obj, if (pagenumber_h) { if (sid->pagesize_h > 0) - *pagenumber_h = (x + sid->pagesize_h - 1) / sid->pagesize_h; + { + double result = (double)x / (double)sid->pagesize_h; + double rest = result - (x / sid->pagesize_h); + if (rest >= 0.5) + *pagenumber_h = result + 1; + else + *pagenumber_h = result; + } else *pagenumber_h = 0; } if (pagenumber_v) { if (sid->pagesize_v > 0) - *pagenumber_v = (y + sid->pagesize_v - 1) / sid->pagesize_v; + { + double result = (double)y / (double)sid->pagesize_v; + double rest = result - (y / sid->pagesize_v); + if (rest >= 0.5) + *pagenumber_v = result + 1; + else + *pagenumber_v = result; + } else *pagenumber_v = 0; }