Fix the scroller show by a page if the page size is set and the region_bring_in or...
authorJaehwan Kim <jae.hwan.kim@samsung.com>
Mon, 8 Apr 2013 04:39:24 +0000 (13:39 +0900)
committerJaehwan Kim <jae.hwan.kim@samsung.com>
Mon, 8 Apr 2013 05:07:58 +0000 (14:07 +0900)
ChangeLog
NEWS
src/lib/elm_interface_scrollable.c

index a723315866be4ac811adbd0e27e266a58e1ac54e..d50b1455e7f5e98ab4c44d08d8fe8218009333e7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 2013-04-08  Jaehwan Kim
 
         * Quit the scroll animator if the scroller don't have a bounce and reach a edge.
+
+2013-04-08  Jaehwan Kim
+
+        * Fix the scroller show by a page if the page size is set and the region_bring_in or region_show is called.
diff --git a/NEWS b/NEWS
index a20fff3b1b089bb1f679ddde949e6a7156931a7b..0dc370c4ebfd6cb479aa9bf3e35e4bc47f4945bb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ Changes since Elementary 1.7.6:
 Fixes:
 
    * Quit the scroll animator if the scroller don't have a bounce and reach a edge.
+   * Fix the scroller show by a page if the page size is set and the region_bring_in or region_show is called.
 
 Elementary 1.7.6
 
index 42bdeb2b60efe615bc4a57e23a82b1f40d6e3049..ded753bb1691025646b826b0b02fe8f26c933d4c 100644 (file)
@@ -33,6 +33,11 @@ ELM_INTERNAL_SMART_SUBCLASS_NEW
   evas_object_smart_clipped_class_get, _smart_callbacks);
 
 static void _elm_pan_content_set(Evas_Object *, Evas_Object *);
+static Eina_Bool _paging_is_enabled(Elm_Scrollable_Smart_Interface_Data *sid);
+static Evas_Coord
+_elm_scroll_page_x_get(Elm_Scrollable_Smart_Interface_Data *sid, int offset);
+static Evas_Coord
+_elm_scroll_page_y_get(Elm_Scrollable_Smart_Interface_Data *sid, int offset);
 
 EAPI const Elm_Pan_Smart_Class *
 elm_pan_smart_class_get(void)
@@ -1602,10 +1607,18 @@ _elm_scroll_content_region_show_internal(Evas_Object *obj,
           _elm_scroll_wanted_region_set(sid->obj);
      }
 
-   x = nx;
+   if (_paging_is_enabled(sid))
+     {
+        x = _elm_scroll_page_x_get(sid, nx - px);
+        y = _elm_scroll_page_y_get(sid, ny - py);
+     }
+   else
+     {
+        x = nx;
+        y = ny;
+     }
    if ((x + pw) > cw) x = cw - pw;
    if (x < minx) x = minx;
-   y = ny;
    if ((y + ph) > ch) y = ch - ph;
    if (y < miny) y = miny;