evas_object_smart_clipped_class_get, _smart_callbacks);
static void _elm_pan_content_set(Evas_Object *, Evas_Object *);
-static Eina_Bool _paging_is_enabled(Elm_Scrollable_Smart_Interface_Data *sid);
-static Evas_Coord
-_elm_scroll_page_x_get(Elm_Scrollable_Smart_Interface_Data *sid, int offset);
-static Evas_Coord
-_elm_scroll_page_y_get(Elm_Scrollable_Smart_Interface_Data *sid, int offset);
EAPI const Elm_Pan_Smart_Class *
elm_pan_smart_class_get(void)
static void _elm_scroll_scroll_bar_size_adjust(
Elm_Scrollable_Smart_Interface_Data *);
static void _elm_scroll_wanted_region_set(Evas_Object *);
+static Eina_Bool _paging_is_enabled(Elm_Scrollable_Smart_Interface_Data *sid);
+static Evas_Coord _elm_scroll_page_x_get(
+ Elm_Scrollable_Smart_Interface_Data *sid, int offset, Eina_Bool limit);
+static Evas_Coord _elm_scroll_page_y_get(
+ Elm_Scrollable_Smart_Interface_Data *sid, int offset, Eina_Bool limit);
static void _elm_scroll_content_pos_get(const Evas_Object *,
Evas_Coord *,
Evas_Coord *);
if (_paging_is_enabled(sid))
{
- x = _elm_scroll_page_x_get(sid, nx - px);
- y = _elm_scroll_page_y_get(sid, ny - py);
+ x = _elm_scroll_page_x_get(sid, nx - px, EINA_FALSE);
+ y = _elm_scroll_page_y_get(sid, ny - py, EINA_FALSE);
}
else
{
static Evas_Coord
_elm_scroll_page_x_get(Elm_Scrollable_Smart_Interface_Data *sid,
- int offset)
+ int offset, Eina_Bool limit)
{
Evas_Coord x, y, w, h, dx, cw, ch, minx = 0;
if (sid->pagerel_h > 0.0)
sid->pagesize_h = w * sid->pagerel_h;
- dx = (sid->pagesize_h * ((double)sid->page_limit_h - 0.5));
-
- if (offset > 0)
- x += (abs(offset) < dx ? offset : dx);
+ if (!limit)
+ x += offset;
else
- x += (abs(offset) < dx ? offset : -dx);
+ {
+ dx = (sid->pagesize_h * ((double)sid->page_limit_h - 0.5));
+
+ if (offset > 0)
+ x += (abs(offset) < dx ? offset : dx);
+ else
+ x += (abs(offset) < dx ? offset : -dx);
+ }
if (sid->pagesize_h > 0)
{
static Evas_Coord
_elm_scroll_page_y_get(Elm_Scrollable_Smart_Interface_Data *sid,
- int offset)
+ int offset, Eina_Bool limit)
{
Evas_Coord x, y, w, h, dy, cw, ch, miny = 0;
if (sid->pagerel_v > 0.0)
sid->pagesize_v = h * sid->pagerel_v;
- dy = (sid->pagesize_v * ((double)sid->page_limit_v - 0.5));
-
- if (offset > 0)
- y += (abs(offset) < dy ? offset : dy);
+ if (!limit)
+ y += offset;
else
- y += (abs(offset) < dy ? offset : -dy);
+ {
+ dy = (sid->pagesize_v * ((double)sid->page_limit_v - 0.5));
+
+ if (offset > 0)
+ y += (abs(offset) < dy ? offset : dy);
+ else
+ y += (abs(offset) < dy ? offset : -dy);
+ }
if (sid->pagesize_v > 0)
{
(!elm_widget_drag_child_locked_x_get
(sid->obj)))
{
- pgx = _elm_scroll_page_x_get(sid, ox);
+ pgx = _elm_scroll_page_x_get(sid, ox, EINA_TRUE);
if (pgx != x)
{
ev->event_flags |= EVAS_EVENT_FLAG_ON_SCROLL;
(!elm_widget_drag_child_locked_y_get
(sid->obj)))
{
- pgy = _elm_scroll_page_y_get(sid, oy);
+ pgy = _elm_scroll_page_y_get(sid, oy, EINA_TRUE);
if (pgy != y)
{
ev->event_flags |= EVAS_EVENT_FLAG_ON_SCROLL;
(!elm_widget_drag_child_locked_x_get
(sid->obj)))
{
- pgx = _elm_scroll_page_x_get(sid, ox);
+ pgx = _elm_scroll_page_x_get(sid, ox, EINA_TRUE);
if (pgx != x)
_elm_scroll_scroll_to_x
(sid, _elm_config->page_scroll_friction, pgx);
(!elm_widget_drag_child_locked_y_get
(sid->obj)))
{
- pgy = _elm_scroll_page_y_get(sid, oy);
+ pgy = _elm_scroll_page_y_get(sid, oy, EINA_TRUE);
if (pgy != y)
_elm_scroll_scroll_to_y
(sid, _elm_config->page_scroll_friction, pgy);
_elm_scroll_content_viewport_size_get(sid->obj, &w, &h);
- x = _elm_scroll_page_x_get(sid, 0);
- y = _elm_scroll_page_y_get(sid, 0);
+ x = _elm_scroll_page_x_get(sid, 0, EINA_TRUE);
+ y = _elm_scroll_page_y_get(sid, 0, EINA_TRUE);
_elm_scroll_content_region_set(sid->obj, x, y, w, h);
}