diff --git a/legacy/elementary/ChangeLog b/legacy/elementary/ChangeLog index e6aeb0a9a0..0e11938b8a 100644 --- a/legacy/elementary/ChangeLog +++ b/legacy/elementary/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/legacy/elementary/NEWS b/legacy/elementary/NEWS index e9cf4f6bf6..38a7751c90 100644 --- a/legacy/elementary/NEWS +++ b/legacy/elementary/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/legacy/elementary/data/themes/default-desktop.edc b/legacy/elementary/data/themes/default-desktop.edc index 1bccc32896..3fec70cd42 100644 --- a/legacy/elementary/data/themes/default-desktop.edc +++ b/legacy/elementary/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/legacy/elementary/data/themes/widgets/scroller.edc b/legacy/elementary/data/themes/widgets/scroller.edc index 66d007ba9e..ca0f316c74 100644 --- a/legacy/elementary/data/themes/widgets/scroller.edc +++ b/legacy/elementary/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/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index df9834143a..4b622ed688 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/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, ""}, @@ -4508,6 +4520,48 @@ _edge_bottom_cb(Evas_Object *obj, evas_object_smart_callback_call(obj, SIG_EDGE_BOTTOM, NULL); } +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) { @@ -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/legacy/elementary/src/lib/elm_interface_scrollable.c b/legacy/elementary/src/lib/elm_interface_scrollable.c index 827e97ba41..643361a152 100644 --- a/legacy/elementary/src/lib/elm_interface_scrollable.c +++ b/legacy/elementary/src/lib/elm_interface_scrollable.c @@ -959,6 +959,44 @@ _elm_scroll_anim_stop(Elm_Scrollable_Smart_Interface_Data *sid) sid->cb_func.animate_stop(sid->obj, NULL); } +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__, @@ -996,6 +1034,44 @@ _elm_scroll_edje_drag_v_cb(void *data, _elm_scroll_scroll_bar_read_and_update(sid); } +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__, @@ -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 @@ -3495,6 +3595,54 @@ _elm_scroll_edge_bottom_cb_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list) sid->cb_func.edge_bottom = edje_bottom_cb; } +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) { @@ -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/legacy/elementary/src/lib/elm_interface_scrollable.h b/legacy/elementary/src/lib/elm_interface_scrollable.h index be97aaf323..92795772fe 100644 --- a/legacy/elementary/src/lib/elm_interface_scrollable.h +++ b/legacy/elementary/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, @@ -336,6 +342,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/legacy/elementary/src/lib/elm_scroller.c b/legacy/elementary/src/lib/elm_scroller.c index a1fcd35c38..d95e5c76dd 100644 --- a/legacy/elementary/src/lib/elm_scroller.c +++ b/legacy/elementary/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} }; @@ -551,6 +563,48 @@ _scroll_drag_stop_cb(Evas_Object *obj, evas_object_smart_callback_call(obj, SIG_SCROLL_DRAG_STOP, NULL); } +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) { @@ -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)); }