From 7c719537331b72f4609a2b68385e9990659eb8c6 Mon Sep 17 00:00:00 2001 From: Umesh Tanwar Date: Mon, 22 Jun 2015 11:57:51 +0200 Subject: [PATCH] elm_scroller: add wheel_disable_set API Summary: This API can be used by widgets like Genlist/Gengrid, which implements Elm_Interface_Scrollable interface.Mouse wheel is used to scroll up and down on widget. @feature Test Plan: elementary_test -> Scroller -> Wheel Disable Reviewers: raster, Hermet, cedric, SanghyeonLee, singh.amitesh Subscribers: JackDanielZ, herdsman, cedric, sachin.dev Differential Revision: https://phab.enlightenment.org/D2715 Signed-off-by: Cedric BAIL --- legacy/elementary/src/bin/test_scroller.c | 17 +++++++++- legacy/elementary/src/lib/elm_scroller.c | 18 ++++++++++ .../elementary/src/lib/elm_scroller_legacy.h | 33 +++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/legacy/elementary/src/bin/test_scroller.c b/legacy/elementary/src/bin/test_scroller.c index 23b2e320c1..4c0150897d 100644 --- a/legacy/elementary/src/bin/test_scroller.c +++ b/legacy/elementary/src/bin/test_scroller.c @@ -134,6 +134,15 @@ _my_bt_loop_y_axis(void *data, Evas_Object *obj EINA_UNUSED, elm_scroller_loop_set(scroller, loop_h, !loop_v); } +static void +_my_bt_wheel_disable_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + Evas_Object *scroller = (Evas_Object *)data; + + elm_scroller_wheel_disabled_set(scroller, elm_check_state_get(obj)); +} + static void _page_change_cb(void *data EINA_UNUSED, Evas_Object *obj, @@ -174,7 +183,7 @@ void test_scroller(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Evas_Object *win, *bg2, *tb, *tb2, *sc, *bt, *ck1, *ck2, *bx, *bx2, *fr, - *ck3, *ck4, *ck5, *ck6, *ck7; + *ck3, *ck4, *ck5, *ck6, *ck7, *ck8; int i, j, n; char buf[PATH_MAX]; Evas_Coord x = 0, y = 0, w = 0, h = 0; @@ -246,6 +255,11 @@ test_scroller(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ elm_box_pack_end(bx2, ck7); evas_object_show(ck7); + ck8 = elm_check_add(win); + elm_object_text_set(ck8, "Wheel Disable"); + elm_box_pack_end(bx2, ck8); + evas_object_show(ck8); + sc = elm_scroller_add(win); evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -290,6 +304,7 @@ test_scroller(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ evas_object_smart_callback_add(ck5, "changed", _my_bt_snap_to_pages, sc); evas_object_smart_callback_add(ck6, "changed", _my_bt_loop_x_axis, sc); evas_object_smart_callback_add(ck7, "changed", _my_bt_loop_y_axis, sc); + evas_object_smart_callback_add(ck8, "changed", _my_bt_wheel_disable_cb, sc); bt = elm_spinner_add(win); elm_spinner_min_max_set(bt, 0, 500); diff --git a/legacy/elementary/src/lib/elm_scroller.c b/legacy/elementary/src/lib/elm_scroller.c index 2e174c9c70..00f18b881a 100644 --- a/legacy/elementary/src/lib/elm_scroller.c +++ b/legacy/elementary/src/lib/elm_scroller.c @@ -1284,6 +1284,24 @@ elm_scroller_loop_get(const Evas_Object *obj, eo_do(obj, elm_interface_scrollable_loop_get(loop_h, loop_v)); } +EAPI void +elm_scroller_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled) +{ + ELM_SCROLLABLE_CHECK(obj); + + eo_do((Eo *)obj, elm_interface_scrollable_wheel_disabled_set(disabled)); +} + +EAPI Eina_Bool +elm_scroller_wheel_disabled_get(const Evas_Object *obj) +{ + ELM_SCROLLABLE_CHECK(obj, EINA_FALSE); + + Eina_Bool ret; + + return eo_do_ret((Eo *) obj, ret, elm_interface_scrollable_wheel_disabled_get()); +} + EOLIAN static void _elm_scroller_propagate_events_set(Eo *obj, Elm_Scroller_Data *_pd EINA_UNUSED, Eina_Bool propagation) { diff --git a/legacy/elementary/src/lib/elm_scroller_legacy.h b/legacy/elementary/src/lib/elm_scroller_legacy.h index bf4d361e12..576ea6c598 100644 --- a/legacy/elementary/src/lib/elm_scroller_legacy.h +++ b/legacy/elementary/src/lib/elm_scroller_legacy.h @@ -525,3 +525,36 @@ EAPI void elm_scroller_loop_set(Evas_Object *obj, Eina_ * @ingroup Scroller */ EAPI void elm_scroller_loop_get(const Evas_Object *obj, Eina_Bool *loop_h, Eina_Bool *loop_v); + +/** + * @brief Enable or disable mouse wheel to be used to scroll the scroller. + * + * @param obj The scroller object + * @param disabled The mouse wheel disabled over the scroller. + * + * Mouse wheel can be used to scroll up and down the scroller. + * Wheel is enabled by default. + * + * @since 1.15 + * + * @see elm_scroller_wheel_disabled_get() + * + * @ingroup Scroller + */ + EAPI void elm_scroller_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled); + + /** + * @brief Get a value whether mouse wheel is enabled or not over the scroller. + * + * @param obj The scroller object + * @return @c EINA_TRUE means scroller wheel is disabled. @c EINA_FALSE indicates it is enabled. + * + * Mouse wheel can be used to scroll up and down the scroller. + * + * @since 1.15 + * + * @see elm_scroller_wheel_disabled_set() + * + * @ingroup Scroller + */ + EAPI Eina_Bool elm_scroller_wheel_disabled_get(const Evas_Object *obj);