From 6b5589687fcd2e743e3ec6d3930d1aa11d1ed533 Mon Sep 17 00:00:00 2001 From: Jaehwan Kim Date: Mon, 26 Mar 2012 10:05:26 +0000 Subject: [PATCH] When the scroller is holded and scrolled, it can be jump. The squence is hold push -> mouse down -> mouse move -> hold pop -> mouse move continuously. After upper sequence, the scroller will jump. So I fixed this issue. SVN revision: 69631 --- legacy/elementary/src/lib/els_scroller.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/legacy/elementary/src/lib/els_scroller.c b/legacy/elementary/src/lib/els_scroller.c index 08ba71a8aa..bb26075905 100644 --- a/legacy/elementary/src/lib/els_scroller.c +++ b/legacy/elementary/src/lib/els_scroller.c @@ -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; } } @@ -2392,6 +2397,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)