Merge "When the scroller is holded and scrolled, it can be jump. The squence is hold...
authorJaehwan Kim <jae.hwan.kim@samsung.com>
Tue, 27 Mar 2012 03:14:48 +0000 (12:14 +0900)
committerGerrit Code Review <gerrit2@localhost>
Tue, 27 Mar 2012 03:14:48 +0000 (12:14 +0900)
src/lib/els_scroller.c

index 87ad01f..dea9e2c 100644 (file)
@@ -70,6 +70,7 @@ struct _Smart_Data
       Eina_Bool bounce_x_hold : 1;
       Eina_Bool bounce_y_hold : 1;
       Eina_Bool scroll : 1;
+      Eina_Bool want_reset : 1;
    } down;
 
    struct {
@@ -1774,6 +1775,10 @@ _smart_event_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSE
         sd->down.dragged_began = EINA_FALSE;
         sd->down.hold_parent = EINA_FALSE;
         sd->down.cancelled = EINA_FALSE;
+        if(sd->hold || sd->freeze)
+           sd->down.want_reset = EINA_TRUE;
+        else
+           sd->down.want_reset = EINA_FALSE;
      }
 }
 
@@ -2396,6 +2401,12 @@ _smart_event_mouse_move(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *
                          y = sd->down.sy - (ev->cur.canvas.y - sd->down.y);
                        else
                          y = sd->down.sy;
+                       if(sd->down.want_reset)
+                         {
+                            sd->down.x = ev->cur.canvas.x;
+                            sd->down.y = ev->cur.canvas.y;
+                            sd->down.want_reset = EINA_FALSE;
+                         }
                        if ((sd->down.dir_x) || (sd->down.dir_y))
                          {
                             if (!sd->down.locked)