diff --git a/legacy/elementary/src/lib/elm_toolbar.c b/legacy/elementary/src/lib/elm_toolbar.c index 2c34289632..843de4814f 100644 --- a/legacy/elementary/src/lib/elm_toolbar.c +++ b/legacy/elementary/src/lib/elm_toolbar.c @@ -16,11 +16,21 @@ EAPI Eo_Op ELM_OBJ_TOOLBAR_BASE_ID = EO_NOOP; #define ELM_TOOLBAR_ITEM_FROM_INLIST(item) \ ((item) ? EINA_INLIST_CONTAINER_GET(item, Elm_Toolbar_Item) : NULL) +static const char SIG_SCROLL[] = "scroll"; +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 char SIG_SCROLL_DRAG_STOP[] = "scroll,drag,stop"; static const char SIG_CLICKED[] = "clicked"; static const char SIG_LONGPRESSED[] = "longpressed"; static const char SIG_CLICKED_DOUBLE[] = "clicked,double"; static const char SIG_LANG_CHANGED[] = "language,changed"; static const Evas_Smart_Cb_Description _smart_callbacks[] = { + {SIG_SCROLL, ""}, + {SIG_SCROLL_ANIM_START, ""}, + {SIG_SCROLL_ANIM_STOP, ""}, + {SIG_SCROLL_DRAG_START, ""}, + {SIG_SCROLL_DRAG_STOP, ""}, {SIG_CLICKED, ""}, {SIG_LONGPRESSED, ""}, {SIG_CLICKED_DOUBLE, ""}, @@ -1832,13 +1842,6 @@ _long_press_cb(void *data) return ECORE_CALLBACK_CANCEL; } -static void -_drag_start_cb(Evas_Object *obj, void *data __UNUSED__) -{ - ELM_TOOLBAR_DATA_GET(obj, sd); - ELM_SAFE_FREE(sd->long_timer, ecore_timer_del); -} - static void _mouse_move_cb(Elm_Toolbar_Item *it, Evas *evas __UNUSED__, @@ -1919,6 +1922,44 @@ _mouse_out_cb(void *data, elm_widget_signal_emit(it->icon, "elm,state,unhighlighted", "elm"); } +static void +_scroll_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_SCROLL, NULL); +} + +static void +_scroll_anim_start_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_SCROLL_ANIM_START, NULL); +} + +static void +_scroll_anim_stop_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_SCROLL_ANIM_STOP, NULL); +} + +static void +_scroll_drag_start_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + ELM_TOOLBAR_DATA_GET(obj, sd); + ELM_SAFE_FREE(sd->long_timer, ecore_timer_del); + + evas_object_smart_callback_call(obj, SIG_SCROLL_DRAG_START, NULL); +} + +static void +_scroll_drag_stop_cb(Evas_Object *obj, + void *data __UNUSED__) +{ + evas_object_smart_callback_call(obj, SIG_SCROLL_DRAG_STOP, NULL); +} + static void _layout(Evas_Object *o, Evas_Object_Box_Data *priv, @@ -2477,7 +2518,11 @@ _elm_toolbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) (_elm_config->thumbscroll_bounce_enable, EINA_FALSE), elm_scrollable_interface_policy_set (ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF), - elm_scrollable_interface_drag_start_cb_set(_drag_start_cb)); + elm_scrollable_interface_scroll_cb_set(_scroll_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), + elm_scrollable_interface_drag_stop_cb_set(_scroll_drag_stop_cb)); edje_object_signal_callback_add (edje, "elm,action,left", "elm", _elm_toolbar_action_left_cb, obj);