From: 김재환 <jae.hwan.kim@samsung.com>
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 31 Jan 2011 10:13:40 +0000 (10:13 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 31 Jan 2011 10:13:40 +0000 (10:13 +0000)
Subject: [E-devel] [Patch] els_scroller - Cannot click even if it
reach to end

I have another issue in scroller when the bounce is off.
Scroller cannot be clicked even if it reach to edge and animation is
end.
The reason is why the momentum animation is running even if it reach
end and bounce animation is off.
So I change the code that if it reach the edge in case of bounce-off,
the momentum animation is stoped.
The following is the patch code.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@56580 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/els_scroller.c

index 6a5a34d..21fb8aa 100644 (file)
@@ -692,6 +692,7 @@ _smart_momentum_animator(void *data)
    Smart_Data *sd;
    double t, dt, p;
    Evas_Coord x, y, dx, dy, px, py, maxx, maxy, minx, miny;
+   Eina_Bool no_bounce_x_end = EINA_FALSE, no_bounce_y_end = EINA_FALSE;
 
    sd = data;
    t = ecore_loop_time_get();
@@ -740,8 +741,19 @@ _smart_momentum_animator(void *data)
        elm_smart_scroller_child_pos_set(sd->smart_obj, x, y);
         sd->pan_func.max_get(sd->pan_obj, &maxx, &maxy);
         sd->pan_func.min_get(sd->pan_obj, &minx, &miny);
+       if (!sd->bounce_horiz)
+          {
+             if (x <= minx) no_bounce_x_end = EINA_TRUE;
+             if ((x - minx) >= maxx) no_bounce_x_end = EINA_TRUE;
+          }
+        if (!sd->bounce_vert)
+          {
+             if (y <= miny) no_bounce_y_end = EINA_TRUE;
+             if ((y - miny) >= maxy) no_bounce_y_end = EINA_TRUE;
+          }
         if ((dt >= 1.0) || 
-            ((sd->down.bounce_x_hold) && (sd->down.bounce_y_hold)))
+            ((sd->down.bounce_x_hold) && (sd->down.bounce_y_hold)) ||
+            (no_bounce_x_end && no_bounce_y_end))
          {
              _smart_anim_stop(sd->smart_obj);
             sd->down.momentum_animator = NULL;