From 8e9d865b1e477186b5650c00ff514fc2527f80ea Mon Sep 17 00:00:00 2001 From: Daniel Juyung Seo Date: Thu, 11 Nov 2010 20:16:23 +0900 Subject: [PATCH] [elm_genlist.c] Applied SVN Revision 54393, 54394 Changes. Changeset 54394 for trunk/TMP/st/elementary/src/lib/elm_genlist.c Timestamp: 11/09/10 19:01:15 (32 hours ago) Author: bdilly Message: Document recently added scroll,edge,X signals to elm_genlist MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Changeset 54393 for trunk/TMP/st/elementary/src/lib/elm_genlist.c Timestamp: 11/09/10 18:48:59 (33 hours ago) Author: bdilly Message: This small patch allows to get a smart callback when the scrollers in an elm_list or in an elm_genlist fire the edge,{top,bottom,left,right} signals, backporting them to the list object. The new smart callbacks called are: · "scroll,edge,top" - the list is scrolled until the top edge · "scroll,edge,bottom" - the list is scrolled until the bottom edge · "scroll,edge,left" - the list is scrolled until the left edge · "scroll,edge,right" - the list is scrolled until the right edge By: Marco Trevisan (Trevino) --- src/bin/test_genlist.c | 41 ++++++++++++++++++++++++++++++++++++++++- src/lib/elm_genlist.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 1 deletion(-) diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c index 3309864..80e0f74 100644 --- a/src/bin/test_genlist.c +++ b/src/bin/test_genlist.c @@ -1,4 +1,7 @@ #include +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif #ifndef ELM_LIB_QUICKLAUNCH /* Hint: @@ -895,6 +898,30 @@ item_drag_right(void *data, Evas_Object *obj, void *event_info) } static void +scroll_top(void *data, Evas_Object *obj, void *event_info) +{ + printf("Top edge!\n"); +} + +static void +scroll_bottom(void *data, Evas_Object *obj, void *event_info) +{ + printf("Bottom edge!\n"); +} + +static void +scroll_left(void *data, Evas_Object *obj, void *event_info) +{ + printf("Left edge!\n"); +} + +static void +scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + printf("Right edge!\n"); +} + +static void item_drag(void *data, Evas_Object *obj, void *event_info) { printf("drag\n"); @@ -916,7 +943,7 @@ void test_genlist5(void *data, Evas_Object *obj, void *event_info) { Evas_Object *win, *bg, *gl, *bx, *bx2, *bt; - static Testitem tit[3]; + static Testitem tit[5]; win = elm_win_add(NULL, "genlist-5", ELM_WIN_BASIC); elm_win_title_set(win, "Genlist 5"); @@ -955,7 +982,15 @@ test_genlist5(void *data, Evas_Object *obj, void *event_info) tit[2].item = elm_genlist_item_append(gl, &itc5, &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */, NULL/* func data */); + tit[3].mode = 3; + tit[3].item = elm_genlist_item_append(gl, &itc5, + &(tit[3])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */, + NULL/* func data */); + tit[4].mode = 4; + tit[4].item = elm_genlist_item_append(gl, &itc5, + &(tit[4])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */, + NULL/* func data */); elm_box_pack_end(bx, gl); evas_object_show(bx); @@ -963,6 +998,10 @@ test_genlist5(void *data, Evas_Object *obj, void *event_info) evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL); evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL); evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL); + evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL); + evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL); + evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL); + evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL); evas_object_smart_callback_add(gl, "drag", item_drag, NULL); evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL); evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL); diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index e81ffdc..b076db7 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -78,6 +78,18 @@ * longpressed - This is called when the item is pressed for a certain amount * of time. By default it's 1 second. * + * scroll,edge,top - This is called when the genlist is scrolled until the top + * edge. + * + * scroll,edge,bottom - This is called when the genlist is scrolled until the + * bottom edge. + * + * scroll,edge,left - This is called when the genlist is scrolled until the + * left edge. + * + * scroll,edge,right - This is called when the genlist is scrolled until the + * right edge. + * * Genlist has a fairly large API, mostly because it's relatively complex, * trying to be both expansive, powerful and efficient. First we will begin * an overview o the theory behind genlist. @@ -2450,6 +2462,34 @@ _freeze_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__ elm_smart_scroller_freeze_set(wd->scr, 0); } +static void +_scroll_edge_left(void *data, Evas_Object *scr __UNUSED__, void *event_info __UNUSED__) +{ + Evas_Object *obj = data; + evas_object_smart_callback_call(obj, "scroll,edge,left", NULL); +} + +static void +_scroll_edge_right(void *data, Evas_Object *scr __UNUSED__, void *event_info __UNUSED__) +{ + Evas_Object *obj = data; + evas_object_smart_callback_call(obj, "scroll,edge,right", NULL); +} + +static void +_scroll_edge_top(void *data, Evas_Object *scr __UNUSED__, void *event_info __UNUSED__) +{ + Evas_Object *obj = data; + evas_object_smart_callback_call(obj, "scroll,edge,top", NULL); +} + +static void +_scroll_edge_bottom(void *data, Evas_Object *scr __UNUSED__, void *event_info __UNUSED__) +{ + Evas_Object *obj = data; + evas_object_smart_callback_call(obj, "scroll,edge,bottom", NULL); +} + /** * Add a new Genlist object * @@ -2501,6 +2541,11 @@ elm_genlist_add(Evas_Object *parent) elm_smart_scroller_bounce_allow_set(wd->scr, EINA_FALSE, EINA_TRUE); + 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); + evas_object_smart_callback_add(wd->scr, "edge,top", _scroll_edge_top, obj); + evas_object_smart_callback_add(wd->scr, "edge,bottom", _scroll_edge_bottom, obj); + wd->obj = obj; wd->mode = ELM_LIST_SCROLL; wd->max_items_per_block = 32; -- 2.7.4