From: Jaehwan Kim Date: Thu, 7 Feb 2013 06:13:31 +0000 (+0000) Subject: Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress... X-Git-Tag: submit/efl/20131021.015827~1024 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=821ed6c0e9d824d13fccb44277ac70e17398bdfb;p=platform%2Fupstream%2Felementary.git Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress". SVN revision: 83703 --- diff --git a/ChangeLog b/ChangeLog index e6aeb0a..0e11938 100644 --- a/ChangeLog +++ b/ChangeLog @@ -980,3 +980,7 @@ 2013-02-07 WooHyun Jung * elm_entry_single_line_set should not change cnp_mode when PLAINTEXT mode. + +2013-02-07 Jaehwan Kim + + * Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress". diff --git a/NEWS b/NEWS index e9cf4f6..38a7751 100644 --- a/NEWS +++ b/NEWS @@ -32,6 +32,7 @@ Additions: * Add "highlighted" and "unhighlighted" callbacks to list, genlist, and gengrid. * Add elm_index_delay_change_time_set/get for changing delay change time in index. * Add elm_index smart callback - "language,changed". + * Add smart callback signals of a scroller. "vbar,drag", "vbar,press", "vbar,unpress", "hbar,drag", "hbar,press", "hbar,unpress". Improvements: diff --git a/data/themes/default-desktop.edc b/data/themes/default-desktop.edc index 1bccc32..3fec70c 100644 --- a/data/themes/default-desktop.edc +++ b/data/themes/default-desktop.edc @@ -592,6 +592,16 @@ externals.external: "elm"; transition: LINEAR 1.0; \ target: "sb_vbar_clip"; \ } \ + program { name: "sb_vbar_press"; \ + signal: "mouse,down,1"; \ + source: "elm.dragable.vbar"; \ + action: SIGNAL_EMIT "elm,vbar,press" "elm"; \ + } \ + program { name: "sb_vbar_unpress"; \ + signal: "mouse,up,1"; \ + source: "elm.dragable.vbar"; \ + action: SIGNAL_EMIT "elm,vbar,unpress" "elm"; \ + } \ program { name: "sb_vbar_a1_down"; \ signal: "mouse,down,1"; \ source: "sb_vbar_a1"; \ @@ -692,6 +702,16 @@ externals.external: "elm"; transition: LINEAR 1.0; \ target: "sb_hbar_clip"; \ } \ + program { name: "sb_hbar_press"; \ + signal: "mouse,down,1"; \ + source: "elm.dragable.hbar"; \ + action: SIGNAL_EMIT "elm,hbar,press" "elm"; \ + } \ + program { name: "sb_hbar_unpress"; \ + signal: "mouse,up,1"; \ + source: "elm.dragable.hbar"; \ + action: SIGNAL_EMIT "elm,hbar,unpress" "elm"; \ + } \ program { name: "sb_hbar_a1_down"; \ signal: "mouse,down,1"; \ source: "sb_hbar_a1"; \ diff --git a/data/themes/widgets/scroller.edc b/data/themes/widgets/scroller.edc index 66d007b..ca0f316 100644 --- a/data/themes/widgets/scroller.edc +++ b/data/themes/widgets/scroller.edc @@ -386,6 +386,16 @@ group { name: "elm/scroller/base/default"; transition: LINEAR 0.5; target: "sb_vbar_clip"; } + program { name: "sb_vbar_press"; + signal: "mouse,down,1"; + source: "elm.dragable.vbar"; + action: SIGNAL_EMIT "elm,vbar,press" "elm"; + } + program { name: "sb_vbar_unpress"; + signal: "mouse,up,1"; + source: "elm.dragable.vbar"; + action: SIGNAL_EMIT "elm,vbar,unpress" "elm"; + } program { name: "hbar_show"; signal: "elm,action,show,hbar"; @@ -443,6 +453,16 @@ group { name: "elm/scroller/base/default"; transition: LINEAR 0.5; target: "sb_hbar_clip"; } + program { name: "sb_hbar_press"; + signal: "mouse,down,1"; + source: "elm.dragable.hbar"; + action: SIGNAL_EMIT "elm,hbar,press" "elm"; + } + program { name: "sb_hbar_unpress"; + signal: "mouse,up,1"; + source: "elm.dragable.hbar"; + action: SIGNAL_EMIT "elm,hbar,unpress" "elm"; + } program { name: "scroll"; signal: "elm,action,scroll"; diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index df98341..4b622ed 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -54,6 +54,12 @@ static const char SIG_EDGE_TOP[] = "edge,top"; static const char SIG_EDGE_BOTTOM[] = "edge,bottom"; static const char SIG_EDGE_LEFT[] = "edge,left"; static const char SIG_EDGE_RIGHT[] = "edge,right"; +static const char SIG_VBAR_DRAG[] = "vbar,drag"; +static const char SIG_VBAR_PRESS[] = "vbar,press"; +static const char SIG_VBAR_UNPRESS[] = "vbar,unpress"; +static const char SIG_HBAR_DRAG[] = "hbar,drag"; +static const char SIG_HBAR_PRESS[] = "hbar,press"; +static const char SIG_HBAR_UNPRESS[] = "hbar,unpress"; static const char SIG_MULTI_SWIPE_LEFT[] = "multi,swipe,left"; static const char SIG_MULTI_SWIPE_RIGHT[] = "multi,swipe,right"; static const char SIG_MULTI_SWIPE_UP[] = "multi,swipe,up"; @@ -95,6 +101,12 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = { {SIG_EDGE_BOTTOM, ""}, {SIG_EDGE_LEFT, ""}, {SIG_EDGE_RIGHT, ""}, + {SIG_VBAR_DRAG, ""}, + {SIG_VBAR_PRESS, ""}, + {SIG_VBAR_UNPRESS, ""}, + {SIG_HBAR_DRAG, ""}, + {SIG_HBAR_PRESS, ""}, + {SIG_HBAR_UNPRESS, ""}, {SIG_MULTI_SWIPE_LEFT, ""}, {SIG_MULTI_SWIPE_RIGHT, ""}, {SIG_MULTI_SWIPE_UP, ""}, @@ -4509,6 +4521,48 @@ _edge_bottom_cb(Evas_Object *obj, } static void +_vbar_drag_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_VBAR_DRAG, NULL); +} + +static void +_vbar_press_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_VBAR_PRESS, NULL); +} + +static void +_vbar_unpress_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_VBAR_UNPRESS, NULL); +} + +static void +_hbar_drag_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_HBAR_DRAG, NULL); +} + +static void +_hbar_press_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_HBAR_PRESS, NULL); +} + +static void +_hbar_unpress_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_HBAR_UNPRESS, NULL); +} + +static void _decorate_item_realize(Elm_Gen_Item *it) { char buf[1024]; @@ -4673,7 +4727,13 @@ _elm_genlist_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) elm_scrollable_interface_edge_left_cb_set(_edge_left_cb), elm_scrollable_interface_edge_right_cb_set(_edge_right_cb), elm_scrollable_interface_edge_top_cb_set(_edge_top_cb), - elm_scrollable_interface_edge_bottom_cb_set(_edge_bottom_cb)); + elm_scrollable_interface_edge_bottom_cb_set(_edge_bottom_cb), + elm_scrollable_interface_vbar_drag_cb_set(_vbar_drag_cb), + elm_scrollable_interface_vbar_press_cb_set(_vbar_press_cb), + elm_scrollable_interface_vbar_unpress_cb_set(_vbar_unpress_cb), + elm_scrollable_interface_hbar_drag_cb_set(_hbar_drag_cb), + elm_scrollable_interface_hbar_press_cb_set(_hbar_press_cb), + elm_scrollable_interface_hbar_unpress_cb_set(_hbar_unpress_cb)); priv->mode = ELM_LIST_SCROLL; priv->max_items_per_block = MAX_ITEMS_PER_BLOCK; diff --git a/src/lib/elm_interface_scrollable.c b/src/lib/elm_interface_scrollable.c index 827e97b..643361a 100644 --- a/src/lib/elm_interface_scrollable.c +++ b/src/lib/elm_interface_scrollable.c @@ -960,6 +960,44 @@ _elm_scroll_anim_stop(Elm_Scrollable_Smart_Interface_Data *sid) } static void +_elm_scroll_vbar_drag_cb(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Elm_Scrollable_Smart_Interface_Data *sid = data; + + if (sid->cb_func.vbar_drag) + sid->cb_func.vbar_drag(sid->obj, NULL); + + _elm_scroll_scroll_bar_read_and_update(sid); +} + +static void +_elm_scroll_vbar_press_cb(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Elm_Scrollable_Smart_Interface_Data *sid = data; + + if (sid->cb_func.vbar_press) + sid->cb_func.vbar_press(sid->obj, NULL); +} + +static void +_elm_scroll_vbar_unpress_cb(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Elm_Scrollable_Smart_Interface_Data *sid = data; + + if (sid->cb_func.vbar_unpress) + sid->cb_func.vbar_unpress(sid->obj, NULL); +} + +static void _elm_scroll_edje_drag_v_start_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, @@ -997,6 +1035,44 @@ _elm_scroll_edje_drag_v_cb(void *data, } static void +_elm_scroll_hbar_drag_cb(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Elm_Scrollable_Smart_Interface_Data *sid = data; + + if (sid->cb_func.hbar_drag) + sid->cb_func.hbar_drag(sid->obj, NULL); + + _elm_scroll_scroll_bar_read_and_update(sid); +} + +static void +_elm_scroll_hbar_press_cb(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Elm_Scrollable_Smart_Interface_Data *sid = data; + + if (sid->cb_func.hbar_press) + sid->cb_func.hbar_press(sid->obj, NULL); +} + +static void +_elm_scroll_hbar_unpress_cb(void *data, + Evas_Object *obj __UNUSED__, + const char *emission __UNUSED__, + const char *source __UNUSED__) +{ + Elm_Scrollable_Smart_Interface_Data *sid = data; + + if (sid->cb_func.hbar_unpress) + sid->cb_func.hbar_unpress(sid->obj, NULL); +} + +static void _elm_scroll_edje_drag_h_start_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, @@ -3089,7 +3165,7 @@ _scroll_edje_object_attach(Evas_Object *obj) (sid->edje_obj, EVAS_CALLBACK_MOVE, _on_edje_move, sid); edje_object_signal_callback_add - (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_edje_drag_v_cb, + (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_vbar_drag_cb, sid); edje_object_signal_callback_add (sid->edje_obj, "drag,set", "elm.dragable.vbar", @@ -3107,7 +3183,13 @@ _scroll_edje_object_attach(Evas_Object *obj) (sid->edje_obj, "drag,page", "elm.dragable.vbar", _elm_scroll_edje_drag_v_cb, sid); edje_object_signal_callback_add - (sid->edje_obj, "drag", "elm.dragable.hbar", _elm_scroll_edje_drag_h_cb, + (sid->edje_obj, "elm,vbar,press", "elm", + _elm_scroll_vbar_press_cb, sid); + edje_object_signal_callback_add + (sid->edje_obj, "elm,vbar,unpress", "elm", + _elm_scroll_vbar_unpress_cb, sid); + edje_object_signal_callback_add + (sid->edje_obj, "drag", "elm.dragable.hbar", _elm_scroll_hbar_drag_cb, sid); edje_object_signal_callback_add (sid->edje_obj, "drag,set", "elm.dragable.hbar", @@ -3124,6 +3206,12 @@ _scroll_edje_object_attach(Evas_Object *obj) edje_object_signal_callback_add (sid->edje_obj, "drag,page", "elm.dragable.hbar", _elm_scroll_edje_drag_h_cb, sid); + edje_object_signal_callback_add + (sid->edje_obj, "elm,hbar,press", "elm", + _elm_scroll_hbar_press_cb, sid); + edje_object_signal_callback_add + (sid->edje_obj, "elm,hbar,unpress", "elm", + _elm_scroll_hbar_unpress_cb, sid); } static void @@ -3156,7 +3244,7 @@ _scroll_edje_object_detach(Evas_Object *obj) (sid->edje_obj, EVAS_CALLBACK_MOVE, _on_edje_move, sid); edje_object_signal_callback_del_full - (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_edje_drag_v_cb, + (sid->edje_obj, "drag", "elm.dragable.vbar", _elm_scroll_vbar_drag_cb, sid); edje_object_signal_callback_del_full (sid->edje_obj, "drag,set", "elm.dragable.vbar", @@ -3174,7 +3262,13 @@ _scroll_edje_object_detach(Evas_Object *obj) (sid->edje_obj, "drag,page", "elm.dragable.vbar", _elm_scroll_edje_drag_v_cb, sid); edje_object_signal_callback_del_full - (sid->edje_obj, "drag", "elm.dragable.hbar", _elm_scroll_edje_drag_h_cb, + (sid->edje_obj, "elm,vbar,press", "elm", + _elm_scroll_vbar_press_cb, sid); + edje_object_signal_callback_del_full + (sid->edje_obj, "elm,vbar,unpress", "elm", + _elm_scroll_vbar_unpress_cb, sid); + edje_object_signal_callback_del_full + (sid->edje_obj, "drag", "elm.dragable.hbar", _elm_scroll_hbar_drag_cb, sid); edje_object_signal_callback_del_full (sid->edje_obj, "drag,set", "elm.dragable.hbar", @@ -3191,6 +3285,12 @@ _scroll_edje_object_detach(Evas_Object *obj) edje_object_signal_callback_del_full (sid->edje_obj, "drag,page", "elm.dragable.hbar", _elm_scroll_edje_drag_h_cb, sid); + edje_object_signal_callback_del_full + (sid->edje_obj, "elm,hbar,press", "elm", + _elm_scroll_hbar_press_cb, sid); + edje_object_signal_callback_del_full + (sid->edje_obj, "elm,hbar,unpress", "elm", + _elm_scroll_hbar_unpress_cb, sid); } static void @@ -3496,6 +3596,54 @@ _elm_scroll_edge_bottom_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) } static void +_elm_scroll_vbar_drag_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb vbar_drag_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.vbar_drag = vbar_drag_cb; +} + +static void +_elm_scroll_vbar_press_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb vbar_press_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.vbar_press = vbar_press_cb; +} + +static void +_elm_scroll_vbar_unpress_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb vbar_unpress_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.vbar_unpress = vbar_unpress_cb; +} + +static void +_elm_scroll_hbar_drag_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb hbar_drag_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.hbar_drag = hbar_drag_cb; +} + +static void +_elm_scroll_hbar_press_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb hbar_press_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.hbar_press = hbar_press_cb; +} + +static void +_elm_scroll_hbar_unpress_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) +{ + Elm_Scrollable_Smart_Interface_Data *sid = _pd; + Elm_Interface_Scrollable_Cb hbar_unpress_cb = va_arg(*list, Elm_Interface_Scrollable_Cb); + sid->cb_func.hbar_unpress = hbar_unpress_cb; +} + +static void _elm_scroll_content_min_limit_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) { Elm_Scrollable_Smart_Interface_Data *sid = _pd; @@ -4011,6 +4159,12 @@ _elm_scrollable_interface_constructor(Eo_Class *klass) 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), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_BOTTOM_CB_SET), _elm_scroll_edge_bottom_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_DRAG_CB_SET), _elm_scroll_vbar_drag_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_PRESS_CB_SET), _elm_scroll_vbar_press_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_UNPRESS_CB_SET), _elm_scroll_vbar_unpress_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_DRAG_CB_SET), _elm_scroll_hbar_drag_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET), _elm_scroll_hbar_press_cb_set), + EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET), _elm_scroll_hbar_unpress_cb_set), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET), _elm_scroll_content_min_limit_cb_set), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET), _elm_scroll_content_pos_set), EO_OP_FUNC(ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET), _elm_scroll_content_pos_get), @@ -4065,6 +4219,12 @@ static const Eo_Op_Description op_desc[] = { 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"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_BOTTOM_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_DRAG_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_PRESS_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_UNPRESS_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_DRAG_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET, "description here"), + EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET, "description here"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET, "description here"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET, "description here"), EO_OP_DESCRIPTION(ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET, "description here"), diff --git a/src/lib/elm_interface_scrollable.h b/src/lib/elm_interface_scrollable.h index be97aaf..9279577 100644 --- a/src/lib/elm_interface_scrollable.h +++ b/src/lib/elm_interface_scrollable.h @@ -161,6 +161,12 @@ enum ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_RIGHT_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_TOP_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_BOTTOM_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_DRAG_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_PRESS_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_UNPRESS_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_DRAG_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET, + ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_MIN_LIMIT_CB_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_SET, ELM_SCROLLABLE_INTERFACE_SUB_ID_CONTENT_POS_GET, @@ -337,6 +343,72 @@ enum #define elm_scrollable_interface_edge_bottom_cb_set(edge_bottom_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_EDGE_BOTTOM_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, edge_bottom_cb) /** + * @def elm_scrollable_interface_vbar_drag_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] vbra_drag_cb + * + */ +#define elm_scrollable_interface_vbar_drag_cb_set(vbar_drag_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_DRAG_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, vbar_drag_cb) + +/** + * @def elm_scrollable_interface_vbar_press_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] vbra_press_cb + * + */ +#define elm_scrollable_interface_vbar_press_cb_set(vbar_press_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_PRESS_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, vbar_press_cb) + +/** + * @def elm_scrollable_interface_vbar_unpress_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] vbra_unpress_cb + * + */ +#define elm_scrollable_interface_vbar_unpress_cb_set(vbar_unpress_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_VBAR_UNPRESS_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, vbar_unpress_cb) + +/** + * @def elm_scrollable_interface_hbar_drag_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] vbra_drag_cb + * + */ +#define elm_scrollable_interface_hbar_drag_cb_set(hbar_drag_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_DRAG_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, hbar_drag_cb) + +/** + * @def elm_scrollable_interface_hbar_press_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] vbra_press_cb + * + */ +#define elm_scrollable_interface_hbar_press_cb_set(hbar_press_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_PRESS_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, hbar_press_cb) + +/** + * @def elm_scrollable_interface_hbar_unpress_cb_set + * @since 1.8 + * + * No description supplied by the EAPI. + * + * @param[in] vbra_unpress_cb + * + */ +#define elm_scrollable_interface_hbar_unpress_cb_set(hbar_unpress_cb) ELM_SCROLLABLE_INTERFACE_ID(ELM_SCROLLABLE_INTERFACE_SUB_ID_HBAR_UNPRESS_CB_SET), EO_TYPECHECK(Elm_Interface_Scrollable_Cb, hbar_unpress_cb) + +/** * @def elm_scrollable_interface_content_min_limit_cb_set * @since 1.8 * @@ -882,6 +954,12 @@ struct _Elm_Scrollable_Smart_Interface_Data Elm_Interface_Scrollable_Cb edge_right; Elm_Interface_Scrollable_Cb edge_top; Elm_Interface_Scrollable_Cb edge_bottom; + Elm_Interface_Scrollable_Cb vbar_drag; + Elm_Interface_Scrollable_Cb vbar_press; + Elm_Interface_Scrollable_Cb vbar_unpress; + Elm_Interface_Scrollable_Cb hbar_drag; + Elm_Interface_Scrollable_Cb hbar_press; + Elm_Interface_Scrollable_Cb hbar_unpress; Elm_Interface_Scrollable_Min_Limit_Cb content_min_limit; } cb_func; diff --git a/src/lib/elm_scroller.c b/src/lib/elm_scroller.c index a1fcd35..d95e5c7 100644 --- a/src/lib/elm_scroller.c +++ b/src/lib/elm_scroller.c @@ -19,6 +19,12 @@ static const char SIG_EDGE_LEFT[] = "edge,left"; static const char SIG_EDGE_RIGHT[] = "edge,right"; static const char SIG_EDGE_TOP[] = "edge,top"; static const char SIG_EDGE_BOTTOM[] = "edge,bottom"; +static const char SIG_VBAR_DRAG[] = "vbar,drag"; +static const char SIG_VBAR_PRESS[] = "vbar,press"; +static const char SIG_VBAR_UNPRESS[] = "vbar,unpress"; +static const char SIG_HBAR_DRAG[] = "hbar,drag"; +static const char SIG_HBAR_PRESS[] = "hbar,press"; +static const char SIG_HBAR_UNPRESS[] = "hbar,unpress"; static const Evas_Smart_Cb_Description _smart_callbacks[] = { {SIG_SCROLL, ""}, @@ -30,6 +36,12 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {SIG_EDGE_RIGHT, ""}, {SIG_EDGE_TOP, ""}, {SIG_EDGE_BOTTOM, ""}, + {SIG_VBAR_DRAG, ""}, + {SIG_VBAR_PRESS, ""}, + {SIG_VBAR_UNPRESS, ""}, + {SIG_HBAR_DRAG, ""}, + {SIG_HBAR_PRESS, ""}, + {SIG_HBAR_UNPRESS, ""}, {NULL, NULL} }; @@ -552,6 +564,48 @@ _scroll_drag_stop_cb(Evas_Object *obj, } static void +_vbar_drag_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_VBAR_DRAG, NULL); +} + +static void +_vbar_press_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_VBAR_PRESS, NULL); +} + +static void +_vbar_unpress_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_VBAR_UNPRESS, NULL); +} + +static void +_hbar_drag_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_HBAR_DRAG, NULL); +} + +static void +_hbar_press_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_HBAR_PRESS, NULL); +} + +static void +_hbar_unpress_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_HBAR_UNPRESS, NULL); +} + +static void _elm_scroller_smart_content_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list) { const char *part = va_arg(*list, const char *); @@ -683,6 +737,12 @@ _elm_scroller_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) elm_scrollable_interface_animate_stop_cb_set(_scroll_anim_stop_cb), elm_scrollable_interface_drag_start_cb_set(_scroll_drag_start_cb), elm_scrollable_interface_drag_stop_cb_set(_scroll_drag_stop_cb), + elm_scrollable_interface_vbar_drag_cb_set(_vbar_drag_cb), + elm_scrollable_interface_vbar_press_cb_set(_vbar_press_cb), + elm_scrollable_interface_vbar_unpress_cb_set(_vbar_unpress_cb), + elm_scrollable_interface_hbar_drag_cb_set(_hbar_drag_cb), + elm_scrollable_interface_hbar_press_cb_set(_hbar_press_cb), + elm_scrollable_interface_hbar_unpress_cb_set(_hbar_unpress_cb), elm_scrollable_interface_content_min_limit_cb_set(_elm_scroller_content_min_limit_cb)); }