From b25a0a3ea385ca02649dd405cbd83f8223f87ff1 Mon Sep 17 00:00:00 2001 From: Dave Andreoli Date: Mon, 4 May 2015 02:16:33 +0200 Subject: [PATCH] Fix slideshow smart events event_info Changed all the callback_call to pass the correct Elm_Object_Item (Eo) pointer, was passing Elm_Slideshow_Item_Data instead. @fix Also updated the test --- legacy/elementary/src/bin/test_slideshow.c | 27 ++++++++++++++++++---- legacy/elementary/src/lib/elm_slideshow.c | 8 +++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/legacy/elementary/src/bin/test_slideshow.c b/legacy/elementary/src/bin/test_slideshow.c index f4560023aa..449d0164cc 100644 --- a/legacy/elementary/src/bin/test_slideshow.c +++ b/legacy/elementary/src/bin/test_slideshow.c @@ -80,6 +80,7 @@ _get(void *data, Evas_Object *obj) //elm_photocam_file_set(photo, data); //elm_photocam_zoom_mode_set(photo, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); + printf("_get (item data: '%s')\n", (char*)data); Evas_Object *photo = elm_image_add(obj); elm_image_file_set(photo, data, NULL); elm_image_fill_outside_set(photo, EINA_FALSE); @@ -88,9 +89,26 @@ _get(void *data, Evas_Object *obj) } static void -_slide_transition(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_del(void *data, Evas_Object *obj EINA_UNUSED) +{ + printf("_del (item data: '%s')\n", (char*)data); +} + + +static void +_changed_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { Elm_Object_Item *slide_it = (Elm_Object_Item *) event_info; + printf("CHANGED (item data: '%s')\n", + (char*)elm_object_item_data_get(slide_it)); +} + +static void +_transition_end_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) +{ + Elm_Object_Item *slide_it = (Elm_Object_Item *) event_info; + printf("TRANSITION,END (item data: '%s')\n", + (char*)elm_object_item_data_get(slide_it)); if (data == slide_it) printf("Reaches to End of slides\n"); } @@ -123,20 +141,21 @@ test_slideshow(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event slideshow = elm_slideshow_add(win); elm_slideshow_loop_set(slideshow, EINA_TRUE); evas_object_size_hint_weight_set(slideshow, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_smart_callback_add(slideshow, "changed", _changed_cb, NULL); elm_win_resize_object_add(win, slideshow); evas_object_show(slideshow); itc.func.get = _get; - itc.func.del = NULL; + itc.func.del = _del; for (i = 0; imgs[i]; i++) { const char *img = eina_stringshare_printf("%s/images/%s", elm_app_data_dir_get(), imgs[i]); - printf("Img : %s\n", img); slide_last_it = elm_slideshow_item_add(slideshow, &itc, img); } - evas_object_smart_callback_add(slideshow, "transition,end", _slide_transition, slide_last_it); + evas_object_smart_callback_add(slideshow, "transition,end", + _transition_end_cb, slide_last_it); notify = elm_notify_add(win); elm_notify_align_set(notify, 0.5, 1.0); diff --git a/legacy/elementary/src/lib/elm_slideshow.c b/legacy/elementary/src/lib/elm_slideshow.c index d2a943dbd9..aae7150fdc 100644 --- a/legacy/elementary/src/lib/elm_slideshow.c +++ b/legacy/elementary/src/lib/elm_slideshow.c @@ -270,7 +270,7 @@ _on_slideshow_end(void *data, elm_layout_signal_emit(data, "anim,end", "slideshow"); if (emission != NULL) - evas_object_smart_callback_call(data, SIG_TRANSITION_END, sd->current); + evas_object_smart_callback_call(data, SIG_TRANSITION_END, EO_OBJ(sd->current)); } static Eina_Bool @@ -475,7 +475,7 @@ _elm_slideshow_item_show(Eo *eo_item EINA_UNUSED, Elm_Slideshow_Item_Data *item) sd->previous = sd->current; sd->current = next; - evas_object_smart_callback_call(WIDGET(item), SIG_CHANGED, sd->current); + evas_object_smart_callback_call(WIDGET(item), SIG_CHANGED, EO_OBJ(sd->current)); } EOLIAN static void @@ -512,7 +512,7 @@ _elm_slideshow_next(Eo *obj, Elm_Slideshow_Data *sd) sd->previous = sd->current; sd->current = next; - evas_object_smart_callback_call(obj, SIG_CHANGED, sd->current); + evas_object_smart_callback_call(obj, SIG_CHANGED, EO_OBJ(sd->current)); } EOLIAN static void @@ -549,7 +549,7 @@ _elm_slideshow_previous(Eo *obj, Elm_Slideshow_Data *sd) sd->previous = sd->current; sd->current = prev; - evas_object_smart_callback_call(obj, SIG_CHANGED, sd->current); + evas_object_smart_callback_call(obj, SIG_CHANGED, EO_OBJ(sd->current)); } EOLIAN static const Eina_List*