diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index 97cbec9a8b..e90643453e 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -7747,6 +7747,10 @@ extern "C" { * - @c "changed" - Called when an item is added, removed, resized * or moved and when the gengrid is resized or gets "horizontal" * property changes. + * - @c "scroll,anim,start" - This is called when scrolling animation has + * started. + * - @c "scroll,anim,stop" - This is called when scrolling animation has + * stopped. * - @c "drag,start,up" - Called when the item in the gengrid has * been dragged (not scrolled) up. * - @c "drag,start,down" - Called when the item in the gengrid has @@ -16634,6 +16638,14 @@ extern "C" { * - @c "drag" - This is called when the item in the list is being dragged. * - @c "longpressed" - This is called when the item is pressed for a certain * amount of time. By default it's 1 second. + * - @c "scroll,anim,start" - This is called when scrolling animation has + * started. + * - @c "scroll,anim,stop" - This is called when scrolling animation has + * stopped. + * - @c "scroll,drag,start" - This is called when dragging the content has + * started. + * - @c "scroll,drag,stop" - This is called when dragging the content has + * stopped. * - @c "scroll,edge,top" - This is called when the genlist is scrolled until * the top edge. * - @c "scroll,edge,bottom" - This is called when the genlist is scrolled diff --git a/legacy/elementary/src/lib/elm_gengrid.c b/legacy/elementary/src/lib/elm_gengrid.c index 797365d8aa..f8b1aa0514 100644 --- a/legacy/elementary/src/lib/elm_gengrid.c +++ b/legacy/elementary/src/lib/elm_gengrid.c @@ -139,6 +139,8 @@ static const char SIG_DRAG_START_RIGHT[] = "drag,start,right"; static const char SIG_DRAG_STOP[] = "drag,stop"; static const char SIG_DRAG[] = "drag"; 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_MOVED[] = "moved"; @@ -158,6 +160,8 @@ static const Evas_Smart_Cb_Description _signals[] = { {SIG_DRAG_STOP, ""}, {SIG_DRAG, ""}, {SIG_SCROLL, ""}, + {SIG_SCROLL_ANIM_START, ""}, + {SIG_SCROLL_ANIM_STOP, ""}, {SIG_SCROLL_DRAG_START, ""}, {SIG_SCROLL_DRAG_STOP, ""}, {SIG_MOVED, ""}, @@ -1584,6 +1588,22 @@ _freeze_off(void *data __UNUSED__, elm_smart_scroller_freeze_set(wd->scr, 0); } +static void +_scr_anim_start(void *data, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, SIG_SCROLL_ANIM_START, NULL); +} + +static void +_scrl_anim_stop(void *data, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, SIG_SCROLL_ANIM_STOP, NULL); +} + static void _scr_drag_start(void *data, Evas_Object *obj __UNUSED__, @@ -1655,6 +1675,8 @@ elm_gengrid_add(Evas_Object *parent) "default"); elm_widget_resize_object_set(obj, wd->scr); + evas_object_smart_callback_add(wd->scr, "animate,start", _scroll_anim_start, obj); + evas_object_smart_callback_add(wd->scr, "animate,stop", _scroll_anim_stop, obj); evas_object_smart_callback_add(wd->scr, "drag,start", _scr_drag_start, obj); evas_object_smart_callback_add(wd->scr, "drag,stop", _scr_drag_stop, obj); evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj); diff --git a/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index 68df571e42..38bc77619e 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/src/lib/elm_genlist.c @@ -245,6 +245,10 @@ static const char SIG_DRAG_START_RIGHT[] = "drag,start,right"; static const char SIG_DRAG_STOP[] = "drag,stop"; static const char SIG_DRAG[] = "drag"; static const char SIG_LONGPRESSED[] = "longpressed"; +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_SCROLL_EDGE_TOP[] = "scroll,edge,top"; static const char SIG_SCROLL_EDGE_BOTTOM[] = "scroll,edge,bottom"; static const char SIG_SCROLL_EDGE_LEFT[] = "scroll,edge,left"; @@ -275,6 +279,10 @@ static const Evas_Smart_Cb_Description _signals[] = { {SIG_DRAG_STOP, ""}, {SIG_DRAG, ""}, {SIG_LONGPRESSED, ""}, + {SIG_SCROLL_ANIM_START, ""}, + {SIG_SCROLL_ANIM_STOP, ""}, + {SIG_SCROLL_DRAG_START, ""}, + {SIG_SCROLL_DRAG_STOP, ""}, {SIG_SCROLL_EDGE_TOP, ""}, {SIG_SCROLL_EDGE_BOTTOM, ""}, {SIG_SCROLL_EDGE_LEFT, ""}, @@ -2765,6 +2773,38 @@ _freeze_off(void *data __UNUSED__, elm_smart_scroller_freeze_set(wd->scr, 0); } +static void +_scr_anim_start(void *data, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, SIG_SCROLL_ANIM_START, NULL); +} + +static void +_scr_anim_stop(void *data, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, SIG_SCROLL_ANIM_STOP, NULL); +} + +static void +_scr_drag_start(void *data, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, SIG_SCROLL_DRAG_START, NULL); +} + +static void +_scr_drag_stop(void *data, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + evas_object_smart_callback_call(data, SIG_SCROLL_DRAG_STOP, NULL); +} + static void _scroll_edge_left(void *data, Evas_Object *scr __UNUSED__, @@ -3002,6 +3042,10 @@ elm_genlist_add(Evas_Object *parent) _elm_config->thumbscroll_bounce_enable); elm_widget_resize_object_set(obj, wd->scr); + evas_object_smart_callback_add(wd->scr, "animate,start", _scr_anim_start, obj); + evas_object_smart_callback_add(wd->scr, "animate,stop", _scr_anim_stop, obj); + evas_object_smart_callback_add(wd->scr, "drag,start", _scr_drag_start, obj); + evas_object_smart_callback_add(wd->scr, "drag,stop", _scr_drag_stop, obj); evas_object_smart_callback_add(wd->scr, "edge,left", _scroll_edge_left, obj); evas_object_smart_callback_add(wd->scr, "edge,right", _scroll_edge_right, obj);