Better logic for elm_scroller_current_page_get() while scrolling/dragging.
authorHosang Kim <hosang12.kim@samsung.com>
Wed, 19 Jun 2013 06:10:06 +0000 (15:10 +0900)
committerSungho Kwak <sungho1.kwak@samsung.com>
Thu, 27 Jun 2013 04:06:12 +0000 (13:06 +0900)
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.

src/lib/elm_interface_scrollable.c

index ed6eb32..aea6abf 100644 (file)
@@ -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;
      }