}
static void
+_smart_momentum_end(Smart_Data *sd)
+{
+ if ((sd->down.bounce_x_animator) || (sd->down.bounce_y_animator)) return;
+ if (sd->down.momentum_animator)
+ {
+ ecore_animator_del(sd->down.momentum_animator);
+ sd->down.momentum_animator = NULL;
+ sd->down.bounce_x_hold = 0;
+ sd->down.bounce_y_hold = 0;
+ sd->down.ax = 0;
+ sd->down.ay = 0;
+ sd->down.pdx = 0;
+ sd->down.pdy = 0;
+ }
+}
+
+static void
_smart_scrollto_x(Smart_Data *sd, double t_in, Evas_Coord pos_x)
{
Evas_Coord px, py, x, y, w, h;
{
ecore_animator_del(sd->down.bounce_x_animator);
sd->down.bounce_x_animator = NULL;
+ _smart_momentum_end(sd);
}
sd->bouncemex = 0;
}
{
ecore_animator_del(sd->down.bounce_y_animator);
sd->down.bounce_y_animator = NULL;
+ _smart_momentum_end(sd);
}
sd->bouncemey = 0;
}
sd->down.bounce_x_animator = NULL;
sd->down.pdx = 0;
sd->bouncemex = 0;
+ _smart_momentum_end(sd);
return ECORE_CALLBACK_CANCEL;
}
}
sd->down.bounce_y_animator = NULL;
sd->down.pdy = 0;
sd->bouncemey = 0;
+ _smart_momentum_end(sd);
return ECORE_CALLBACK_CANCEL;
}
}
{
Smart_Data *sd;
double t, dt, p;
- Evas_Coord x, y, dx, dy, px, py;
+ Evas_Coord x, y, dx, dy, px, py, maxx, maxy, minx, miny;
sd = data;
t = ecore_loop_time_get();
y = py;
}
elm_smart_scroller_child_pos_set(sd->smart_obj, x, y);
- if (dt >= 1.0 || ((sd->down.bounce_x_hold) && (sd->down.bounce_y_hold)))
+ sd->pan_func.max_get(sd->pan_obj, &maxx, &maxy);
+ sd->pan_func.min_get(sd->pan_obj, &minx, &miny);
+ if ((dt >= 1.0) ||
+ ((sd->down.bounce_x_hold) && (sd->down.bounce_y_hold)))
{
_smart_anim_stop(sd->smart_obj);
sd->down.momentum_animator = NULL;