please update documentation. ------------------------------------ -Regards, Hermet-
-----Original Message----- From: "Jaehwan Kim - Enlightenment Git"<no-re...@enlightenment.org> To: <enlightenment-...@lists.sourceforge.net>; Cc: Sent: 2013-03-15 (금) 20:23:31 Subject: [EGIT] [core/elementary] master 01/01: Add the smart signals in scroller. "scroll, left", "scroll, right", "scroll, up", "scroll, down". jaehwan pushed a commit to branch master. commit a74d9deb60ce71a34a71382b0fab8b2bb5bf6754 Author: Jaehwan Kim <jae.hwan.kim>@samsung.com> Date: Fri Mar 15 18:53:17 2013 +0900 Add the smart signals in scroller. "scroll,left", "scroll,right", "scroll,up", "scroll,down". --- ChangeLog 4 ++ NEWS 1 + src/lib/elm_interface_scrollable.c 77 ++++++++++++++++++++++++++++++++++---- src/lib/elm_interface_scrollable.h 52 +++++++++++++++++++++++++ src/lib/elm_scroller.c 40 ++++++++++++++++++++ 5 files changed, 167 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9119356..e4c6074 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1153,3 +1153,7 @@ 2013-03-13 Tae-Hwan Kim (bluezery) * Fix a memory leak in elm_genlist. Return value of elm_genlist_realized_items_get should be freed + +2013-03-15 Jaehwan Kim + + * Add the smart signals in scroller. "scroll,left", "scroll,right", "scroll,up", "scroll,down". diff --git a/NEWS b/NEWS index 0f80ddd..94867f9 100644 --- a/NEWS +++ b/NEWS @@ -49,6 +49,7 @@ Additions: * Add the config ELM_THUMBSCROLL_HOLD_THRESHOLD. * Add elm_naviframe_item_pop_cb_set(). * Add elm_widget_newest_focus_order_get for knowing the last object(and its focus order) which got focus. + * Add the smart signals in scroller. "scroll,left", "scroll,right", "scroll,up", "scroll,down". Improvements: diff --git a/src/lib/elm_interface_scrollable.c b/src/lib/elm_interface_scrollable.c index 1d0da0d..ae77a16 100644 --- a/src/lib/elm_interface_scrollable.c +++ b/src/lib/elm_interface_scrollable.c @@ -1502,8 +1502,6 @@ _elm_scroll_content_pos_set(Eo *obj, void *_pd, va_list *list) 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)) @@ -1527,13 +1525,38 @@ _elm_scroll_content_pos_set(Eo *obj, void *_pd, va_list *list) 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) @@ -3574,6 +3597,38 @@ _elm_scroll_scroll_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) } static void +_elm_scroll_scroll_left_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb scroll_left_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.scroll_left = scroll_left_cb; +} + +static void +_elm_scroll_scroll_right_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb scroll_right_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.scroll_right = scroll_right_cb; +} + +static void +_elm_scroll_scroll_up_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb scroll_up_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.scroll_up = scroll_up_cb; +} + +static void +_elm_scroll_scroll_down_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb scroll_down_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.scroll_down = scroll_down_cb; +} + +static void _elm_scroll_edge_left_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) { Elm_Scrollable_Smart_Interface_Data *sid = _pd; @@ -4165,6 +4220,10 @@ _elm_scrollable_interface_constructor(Eo_Class *klass) EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET), _elm_scroll_animate_start_cb_set), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET), _elm_scroll_animate_stop_cb_set), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET), _elm_scroll_scroll_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET), _elm_scroll_scroll_left_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET), _elm_scroll_scroll_right_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET), _elm_scroll_scroll_up_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET), _elm_scroll_scroll_down_cb_set), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET), _elm_scroll_edge_left_cb_set), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET), _elm_scroll_edge_right_cb_set), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET), _elm_scroll_edge_top_cb_set), @@ -4227,6 +4286,10 @@ static const Eo_Op_Description op_desc[] = { EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET, "description here"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET, "description here"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET, "description here"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET, "description here"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET, "description here"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET, "description here"), diff --git a/src/lib/elm_interface_scrollable.h b/src/lib/elm_interface_scrollable.h index de5db26..1a001e7 100644 --- a/src/lib/elm_interface_scrollable.h +++ b/src/lib/elm_interface_scrollable.h @@ -157,6 +157,10 @@ enum ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_START_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_ANIMATE_STOP_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_LEFT_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET, @@ -299,6 +303,50 @@ enum #define elm_scrollable_interface_scroll_cb_set(scroll_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_cb) /** + * @def elm_scrollable_interface_scroll_left_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] scroll_left_cb + * + */ +#define elm_scrollable_interface_scroll_left_cb_set(scroll_left_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_LEFT_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_left_cb) + +/** + * @def elm_scrollable_interface_scroll_right_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] scroll_right_cb + * + */ +#define elm_scrollable_interface_scroll_right_cb_set(scroll_right_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_RIGHT_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_right_cb) + +/** + * @def elm_scrollable_interface_scroll_up_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] scroll_up_cb + * + */ +#define elm_scrollable_interface_scroll_up_cb_set(scroll_up_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_UP_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_up_cb) + +/** + * @def elm_scrollable_interface_scroll_down_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] scroll_down_cb + * + */ +#define elm_scrollable_interface_scroll_down_cb_set(scroll_down_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_SCROLL_DOWN_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, scroll_down_cb) + +/** * @def elm_scrollable_interface_edge_left_cb_set * @since 1.8 * @@ -951,6 +999,10 @@ struct _Elm_Scrollable_Smart_Interface_Data Elm_Interface_Scrollable_Cb animate_start; Elm_Interface_Scrollable_Cb animate_stop; Elm_Interface_Scrollable_Cb scroll; + Elm_Interface_Scrollable_Cb scroll_left; + Elm_Interface_Scrollable_Cb scroll_right; + Elm_Interface_Scrollable_Cb scroll_up; + Elm_Interface_Scrollable_Cb scroll_down; Elm_Interface_Scrollable_Cb edge_left; Elm_Interface_Scrollable_Cb edge_right; Elm_Interface_Scrollable_Cb edge_top; diff --git a/src/lib/elm_scroller.c b/src/lib/elm_scroller.c index f78a809..b56c2a6 100644 --- a/src/lib/elm_scroller.c +++ b/src/lib/elm_scroller.c @@ -11,6 +11,10 @@ EAPI Eo_Op ELM_OBJ_SCROLLER_BASE_ID = EO_NOOP; #define MY_CLASS_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"; @@ -28,6 +32,10 @@ static const char SIG_HBAR_UNPRESS[] = "hbar,unpress"; 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, ""}, @@ -536,6 +544,34 @@ _scroll_cb(Evas_Object *obj, } 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__) { @@ -735,6 +771,10 @@ _elm_scroller_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) elm_scrollable_interface_edge_top_cb_set(_edge_top_cb), elm_scrollable_interface_edge_bottom_cb_set(_edge_bottom_cb), elm_scrollable_interface_scroll_cb_set(_scroll_cb), + elm_scrollable_interface_scroll_left_cb_set(_scroll_left_cb), + elm_scrollable_interface_scroll_right_cb_set(_scroll_right_cb), + elm_scrollable_interface_scroll_up_cb_set(_scroll_up_cb), + elm_scrollable_interface_scroll_down_cb_set(_scroll_down_cb), elm_scrollable_interface_animate_start_cb_set(_scroll_anim_start_cb), elm_scrollable_interface_animate_stop_cb_set(_scroll_anim_stop_cb), elm_scrollable_interface_drag_start_cb_set(_scroll_drag_start_cb), -- ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_mar ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_mar _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel