edje_object_part_drag_value_set
(sid->edje_obj, "elm.dragable.hbar", vx, 0.0);
- if (sig && ((px != x) || (py != y)))
- edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
if (!sid->down.bounce_x_animator)
{
if (((x < minx) && (0 <= sid->down.dx)) ||
sid->bouncemey = EINA_FALSE;
}
- if ((x != px) || (y != py))
- {
- if (sid->cb_func.scroll)
- sid->cb_func.scroll(obj, NULL);
- }
if (sig)
{
+ if ((x != px) || (y != py))
+ {
+ if (sid->cb_func.scroll)
+ sid->cb_func.scroll(obj, NULL);
+ edje_object_signal_emit(sid->edje_obj, "elm,action,scroll", "elm");
+ if (x < px)
+ {
+ if (sid->cb_func.scroll_left)
+ sid->cb_func.scroll_left(obj, NULL);
+ edje_object_signal_emit(sid->edje_obj, "elm,action,scroll,left", "elm");
+ }
+ if (x > px)
+ {
+ if (sid->cb_func.scroll_right)
+ sid->cb_func.scroll_right(obj, NULL);
+ edje_object_signal_emit(sid->edje_obj, "elm,action,scroll,right", "elm");
+ }
+ if (y < py)
+ {
+ if (sid->cb_func.scroll_up)
+ sid->cb_func.scroll_up(obj, NULL);
+ edje_object_signal_emit(sid->edje_obj, "elm,action,scroll,up", "elm");
+ }
+ if (y > py)
+ {
+ if (sid->cb_func.scroll_down)
+ sid->cb_func.scroll_down(obj, NULL);
+ edje_object_signal_emit(sid->edje_obj, "elm,action,scroll,down", "elm");
+ }
+ }
if (x != px)
{
if (x == minx)
}
static void
+_elm_scroll_scroll_left_cb_set(Evas_Object *obj,
+ void (*scroll_left_cb)(Evas_Object *obj,
+ void *data))
+{
+ ELM_SCROLL_IFACE_DATA_GET_OR_RETURN(obj, sid);
+
+ sid->cb_func.scroll_left = scroll_left_cb;
+}
+
+static void
+_elm_scroll_scroll_right_cb_set(Evas_Object *obj,
+ void (*scroll_right_cb)(Evas_Object *obj,
+ void *data))
+{
+ ELM_SCROLL_IFACE_DATA_GET_OR_RETURN(obj, sid);
+
+ sid->cb_func.scroll_right = scroll_right_cb;
+}
+
+static void
+_elm_scroll_scroll_up_cb_set(Evas_Object *obj,
+ void (*scroll_up_cb)(Evas_Object *obj,
+ void *data))
+{
+ ELM_SCROLL_IFACE_DATA_GET_OR_RETURN(obj, sid);
+
+ sid->cb_func.scroll_up = scroll_up_cb;
+}
+
+static void
+_elm_scroll_scroll_down_cb_set(Evas_Object *obj,
+ void (*scroll_down_cb)(Evas_Object *obj,
+ void *data))
+{
+ ELM_SCROLL_IFACE_DATA_GET_OR_RETURN(obj, sid);
+
+ sid->cb_func.scroll_down = scroll_down_cb;
+}
+
+static void
_elm_scroll_edge_left_cb_set(Evas_Object *obj,
void (*edge_left_cb)(Evas_Object *obj,
void *data))
_elm_scroll_animate_start_cb_set,
_elm_scroll_animate_stop_cb_set,
_elm_scroll_scroll_cb_set,
+ _elm_scroll_scroll_left_cb_set,
+ _elm_scroll_scroll_right_cb_set,
+ _elm_scroll_scroll_up_cb_set,
+ _elm_scroll_scroll_down_cb_set,
_elm_scroll_edge_left_cb_set,
_elm_scroll_edge_right_cb_set,
_elm_scroll_edge_top_cb_set,
void *data);
void (*scroll)(Evas_Object *obj,
void *data);
+ void (*scroll_left)(Evas_Object *obj,
+ void *data);
+ void (*scroll_right)(Evas_Object *obj,
+ void *data);
+ void (*scroll_up)(Evas_Object *obj,
+ void *data);
+ void (*scroll_down)(Evas_Object *obj,
+ void *data);
void (*edge_left)(Evas_Object *obj,
void *data);
void (*edge_right)(Evas_Object *obj,
void (*scroll_cb_set)(Evas_Object *obj,
void (*s_cb)(Evas_Object *obj,
void *data));
+ void (*scroll_left_cb_set)(Evas_Object *obj,
+ void (*s_left_cb)(Evas_Object *obj,
+ void *data));
+ void (*scroll_right_cb_set)(Evas_Object *obj,
+ void (*s_right_cb)(Evas_Object *obj,
+ void *data));
+ void (*scroll_up_cb_set)(Evas_Object *obj,
+ void (*s_up_cb)(Evas_Object *obj,
+ void *data));
+ void (*scroll_down_cb_set)(Evas_Object *obj,
+ void (*s_down_cb)(Evas_Object *obj,
+ void *data));
void (*edge_left_cb_set)(Evas_Object *obj,
void (*e_left_cb)(Evas_Object *obj,
void *data));
EAPI const char ELM_SCROLLER_SMART_NAME[] = "elm_scroller";
static const char SIG_SCROLL[] = "scroll";
+static const char SIG_SCROLL_LEFT[] = "scroll,left";
+static const char SIG_SCROLL_RIGHT[] = "scroll,right";
+static const char SIG_SCROLL_UP[] = "scroll,up";
+static const char SIG_SCROLL_DOWN[] = "scroll,down";
static const char SIG_SCROLL_ANIM_START[] = "scroll,anim,start";
static const char SIG_SCROLL_ANIM_STOP[] = "scroll,anim,stop";
static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start";
static const Evas_Smart_Cb_Description _smart_callbacks[] =
{
{SIG_SCROLL, ""},
+ {SIG_SCROLL_LEFT, ""},
+ {SIG_SCROLL_RIGHT, ""},
+ {SIG_SCROLL_UP, ""},
+ {SIG_SCROLL_DOWN, ""},
{SIG_SCROLL_ANIM_START, ""},
{SIG_SCROLL_ANIM_STOP, ""},
{SIG_SCROLL_DRAG_START, ""},
}
static void
+_scroll_left_cb(Evas_Object *obj,
+ void *data __UNUSED__)
+{
+ evas_object_smart_callback_call(obj, SIG_SCROLL_LEFT, NULL);
+}
+
+static void
+_scroll_right_cb(Evas_Object *obj,
+ void *data __UNUSED__)
+{
+ evas_object_smart_callback_call(obj, SIG_SCROLL_RIGHT, NULL);
+}
+
+static void
+_scroll_up_cb(Evas_Object *obj,
+ void *data __UNUSED__)
+{
+ evas_object_smart_callback_call(obj, SIG_SCROLL_UP, NULL);
+}
+
+static void
+_scroll_down_cb(Evas_Object *obj,
+ void *data __UNUSED__)
+{
+ evas_object_smart_callback_call(obj, SIG_SCROLL_DOWN, NULL);
+}
+
+static void
_scroll_anim_start_cb(Evas_Object *obj,
void *data __UNUSED__)
{
priv->s_iface->hbar_press_cb_set(obj, _hbar_press_cb);
priv->s_iface->hbar_unpress_cb_set(obj, _hbar_unpress_cb);
priv->s_iface->scroll_cb_set(obj, _scroll_cb);
+ priv->s_iface->scroll_left_cb_set(obj, _scroll_left_cb);
+ priv->s_iface->scroll_right_cb_set(obj, _scroll_right_cb);
+ priv->s_iface->scroll_up_cb_set(obj, _scroll_up_cb);
+ priv->s_iface->scroll_down_cb_set(obj, _scroll_down_cb);
priv->s_iface->animate_start_cb_set(obj, _scroll_anim_start_cb);
priv->s_iface->animate_stop_cb_set(obj, _scroll_anim_stop_cb);
priv->s_iface->drag_start_cb_set(obj, _scroll_drag_start_cb);