forked from enlightenment/efl
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:
parent
f2a914c1be
commit
ec4a9c6b9c
|
@ -454,6 +454,8 @@ _smart_scrollto_x_animator(void *data)
|
||||||
{
|
{
|
||||||
px = sd->scrollto.x.end;
|
px = sd->scrollto.x.end;
|
||||||
elm_smart_scroller_child_pos_set(sd->smart_obj, px, py);
|
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);
|
_update_wanted_coordinates(sd, px, py);
|
||||||
sd->scrollto.x.animator = NULL;
|
sd->scrollto.x.animator = NULL;
|
||||||
if ((!sd->scrollto.y.animator) && (!sd->down.bounce_y_animator))
|
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;
|
py = sd->scrollto.y.end;
|
||||||
elm_smart_scroller_child_pos_set(sd->smart_obj, px, py);
|
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);
|
_update_wanted_coordinates(sd, px, py);
|
||||||
sd->scrollto.y.animator = NULL;
|
sd->scrollto.y.animator = NULL;
|
||||||
if ((!sd->scrollto.x.animator) && (!sd->down.bounce_x_animator))
|
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)
|
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))
|
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
|
/* 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->ww = w;
|
||||||
sd->wh = h;
|
sd->wh = h;
|
||||||
if (_elm_smart_scroller_child_region_show_internal(obj, &x, &y, w, 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
|
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)
|
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
|
||||||
sd->down.hold_parent = EINA_TRUE;
|
sd->down.hold_parent = EINA_TRUE;
|
||||||
evas_post_event_callback_push(e, _smart_event_post_move, sd);
|
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
|
// FIXME: respect elm_widget_scroll_hold_get of parent container
|
||||||
if (_elm_config->thumbscroll_enable)
|
if (_elm_config->thumbscroll_enable)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue