If the region_show or bring_in occurs during dragging the scroller and not happened mouse up event, it is scrolled to that position.

But if the dragging is continued, it returns current position. So I changed it is scrolled at that position. 
And if mouse move event occurs while bring_in animation, the animation is stoped.


SVN revision: 67236
This commit is contained in:
Jaehwan Kim 2012-01-16 04:48:52 +00:00
parent f2a914c1be
commit ec4a9c6b9c
1 changed files with 38 additions and 2 deletions

View File

@ -454,6 +454,8 @@ _smart_scrollto_x_animator(void *data)
{
px = sd->scrollto.x.end;
elm_smart_scroller_child_pos_set(sd->smart_obj, px, py);
sd->down.sx = px;
sd->down.x = sd->down.history[0].x;
_update_wanted_coordinates(sd, px, py);
sd->scrollto.x.animator = NULL;
if ((!sd->scrollto.y.animator) && (!sd->down.bounce_y_animator))
@ -546,6 +548,8 @@ _smart_scrollto_y_animator(void *data)
{
py = sd->scrollto.y.end;
elm_smart_scroller_child_pos_set(sd->smart_obj, px, py);
sd->down.sy = py;
sd->down.y = sd->down.history[0].y;
_update_wanted_coordinates(sd, px, py);
sd->scrollto.y.animator = NULL;
if ((!sd->scrollto.x.animator) && (!sd->down.bounce_x_animator))
@ -1164,7 +1168,13 @@ void
elm_smart_scroller_child_region_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
{
if (_elm_smart_scroller_child_region_show_internal(obj, &x, &y, w, h))
elm_smart_scroller_child_pos_set(obj, x, y);
{
elm_smart_scroller_child_pos_set(obj, x, y);
sd->down.sx = x;
sd->down.sy = y;
sd->down.x = sd->down.history[0].x;
sd->down.y = sd->down.history[0].y;
}
}
/* Set should be used for setting the wanted position, for example a user scroll
@ -1178,7 +1188,13 @@ elm_smart_scroller_child_region_show(Evas_Object *obj, Evas_Coord x, Evas_Coord
sd->ww = w;
sd->wh = h;
if (_elm_smart_scroller_child_region_show_internal(obj, &x, &y, w, h))
elm_smart_scroller_child_pos_set(obj, x, y);
{
elm_smart_scroller_child_pos_set(obj, x, y);
sd->down.sx = x;
sd->down.sy = y;
sd->down.x = sd->down.history[0].x;
sd->down.y = sd->down.history[0].y;
}
}
void
@ -2255,6 +2271,26 @@ _smart_event_mouse_move(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
sd->down.hold_parent = EINA_TRUE;
evas_post_event_callback_push(e, _smart_event_post_move, sd);
if (sd->scrollto.x.animator)
{
Evas_Coord px;
ecore_animator_del(sd->scrollto.x.animator);
sd->scrollto.x.animator = NULL;
sd->pan_func.get(sd->pan_obj, &px, NULL);
sd->down.sx = px;
sd->down.x = sd->down.history[0].x;
}
if (sd->scrollto.y.animator)
{
Evas_Coord py;
ecore_animator_del(sd->scrollto.y.animator);
sd->scrollto.y.animator = NULL;
sd->pan_func.get(sd->pan_obj, NULL, &py);
sd->down.sy = py;
sd->down.y = sd->down.history[0].y;
}
// FIXME: respect elm_widget_scroll_hold_get of parent container
if (_elm_config->thumbscroll_enable)
{