seoz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=ba6ca19b98ab396c47d407855b5d4454909c6a38
commit ba6ca19b98ab396c47d407855b5d4454909c6a38 Author: Daniel Juyung Seo <[email protected]> Date: Sun Dec 14 04:06:44 2014 +0900 test_genlist: Refactor genlist focus test. - Add more sample items. - Clear genlist on focus callback only for the specified item. - Fix broken item index handling - Remove unnecessary app data structure members. - Free unused item class. --- src/bin/test_genlist.c | 89 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 35 deletions(-) diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c index 9fd6737..1b349e7 100644 --- a/src/bin/test_genlist.c +++ b/src/bin/test_genlist.c @@ -13,6 +13,7 @@ struct _api_data unsigned int state; /* What state we are testing */ void *box; /* Use this to get box content */ + Elm_Genlist_Item_Class *itc; Elm_Genlist_Item_Class *itc1; Elm_Genlist_Item_Class *itc2; void *gl; @@ -4001,17 +4002,21 @@ test_genlist_del(void *data EINA_UNUSED, static unsigned _gl_focus_objects = 3; static const char *_gl_focus_object_names[] = {"None", "Square", "Button", "Check", "Box"}; -// for the first genlist item +// for the top genlist items static char * -gl_focus_popup_item_text_get(void *data, Evas_Object *obj EINA_UNUSED, - const char *part EINA_UNUSED) +gl_focus_top_items_text_get(void *data, Evas_Object *obj EINA_UNUSED, + const char *part EINA_UNUSED) { if (!data) return NULL; - if (!strcmp(data, "popup_sel")) + if (!strcmp(data, "do_nothing")) + return strdup("Genlist Item"); + else if (!strcmp(data, "popup_sel")) return strdup("Create a popup on Select"); else if (!strcmp(data, "popup_mouse_down")) return strdup("Create a popup on Mouse Down"); + else if (!strcmp(data, "clear_on_focus")) + return strdup("Genlist Clear on Focus"); else return NULL; } @@ -4162,8 +4167,17 @@ _gl_focus_move_policy_changed_cb(void *data EINA_UNUSED, static void _gl_focus_item_focus_cb(void *data, Evas_Object *obj, void *event_info) { - printf("%s: %p\n", (char *)data, event_info); - elm_genlist_clear(obj); + printf("item,focused: %p\n", event_info); + + if (event_info == data) + elm_genlist_clear(obj); +} + +static void +_gl_focus_item_unfocus_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, + void *event_info) +{ + printf("item,unfocused %p\n", event_info); } static void @@ -4191,7 +4205,7 @@ _gl_focus_mouse_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, it = elm_genlist_at_xy_item_get(obj, ev->canvas.x, ev->canvas.y, &postret); if (!it) return; - if (elm_genlist_item_index_get(it) == 2) + if (elm_genlist_item_index_get(it) == 4) _gl_focus_sel_popup_create(obj); } @@ -4529,8 +4543,8 @@ test_genlist_focus(void *data EINA_UNUSED, { Evas_Object *win, *bx, *bx2, *gl, *btn; unsigned lhand, rhand; - Elm_Object_Item *it = NULL, *it_0 = NULL, *it_2 = NULL; - Elm_Genlist_Item_Class *itc = NULL; + Elm_Object_Item *it = NULL, *it_1 = NULL, *it_2 = NULL; + Elm_Genlist_Item_Class *itc = NULL, *itc1 = NULL, *itc2 = NULL; api_data *api = calloc(1, sizeof(api_data)); win = elm_win_util_standard_add("genlist-focus", "Genlist Focus"); @@ -4575,8 +4589,6 @@ test_genlist_focus(void *data EINA_UNUSED, elm_box_pack_end(bx2, gl); api->gl = gl; evas_object_show(gl); - evas_object_smart_callback_add(gl, "item,focused", _gl_focus_item_focus_cb, "item,focused"); - evas_object_smart_callback_add(gl, "item,unfocused", _gl_focus_item_focus_cb, "item,unfocused"); evas_object_smart_callback_add(gl, "selected", _gl_focus_item_cb, "selected"); evas_object_smart_callback_add(gl, "unselected", _gl_focus_item_cb, "unselected"); evas_object_smart_callback_add(gl, "activated", _gl_focus_item_cb, "activated"); @@ -4599,62 +4611,69 @@ test_genlist_focus(void *data EINA_UNUSED, _focus_button_clicked_cb, "Down"); evas_object_show(btn); - itc = elm_genlist_item_class_new(); - itc->item_style = "default"; - itc->func.text_get = gl_focus_popup_item_text_get; + itc->func.text_get = gl_focus_top_items_text_get; itc->func.content_get = NULL; itc->func.state_get = NULL; itc->func.del = NULL; - api->itc1 = elm_genlist_item_class_new(); - api->itc1->item_style = "default"; - api->itc1->func.text_get = gl_focus_text_get; - api->itc1->func.content_get = gl_focus_content_get; - api->itc1->func.state_get = NULL; - api->itc1->func.del = NULL; - - api->itc2 = elm_genlist_item_class_new(); - api->itc2->item_style = "tree_effect"; - api->itc2->func.text_get = gl_focus_text_get; - api->itc2->func.content_get = gl_focus_content_get; - api->itc2->func.state_get = NULL; - api->itc2->func.del = NULL; - + itc1 = elm_genlist_item_class_new(); + itc1->item_style = "default"; + itc1->func.text_get = gl_focus_text_get; + itc1->func.content_get = gl_focus_content_get; + itc1->func.state_get = NULL; + itc1->func.del = NULL; + + itc2 = elm_genlist_item_class_new(); + itc2->item_style = "tree_effect"; + itc2->func.text_get = gl_focus_text_get; + itc2->func.content_get = gl_focus_content_get; + itc2->func.state_get = NULL; + itc2->func.del = NULL; + + it_1 = elm_genlist_item_append(gl, itc, "do_nothing", NULL, ELM_GENLIST_ITEM_NONE, + NULL, NULL); + it_2 = elm_genlist_item_append(gl, itc, "do_nothing", NULL, ELM_GENLIST_ITEM_NONE, + NULL, NULL); elm_genlist_item_append(gl, itc, "popup_sel", NULL, ELM_GENLIST_ITEM_NONE, _gl_focus_0_item_sel_cb, NULL); elm_genlist_item_append(gl, itc, "popup_mouse_down", NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + it = elm_genlist_item_append(gl, itc, "clear_on_focus", NULL, ELM_GENLIST_ITEM_NONE, + NULL, NULL); + evas_object_smart_callback_add(gl, "item,focused", _gl_focus_item_focus_cb, it); + evas_object_smart_callback_add(gl, "item,unfocused", _gl_focus_item_unfocus_cb, NULL); + for (lhand = 0; lhand < _gl_focus_objects; lhand++) { for (rhand = 0; rhand < _gl_focus_objects; rhand++) { unsigned digit1 = lhand * 10 + rhand; - it = elm_genlist_item_append(gl, api->itc1, (void*)(uintptr_t)digit1, + it = elm_genlist_item_append(gl, itc1, (void*)(uintptr_t)digit1, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - if (!it_0) it_0 = it; unsigned digit2 = (_gl_focus_objects - lhand -1) * 10 + (_gl_focus_objects - rhand -1); - it = elm_genlist_item_append(gl, api->itc1, (void*)(uintptr_t)digit2, + it = elm_genlist_item_append(gl, itc1, (void*)(uintptr_t)digit2, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); if (!it_2) it_2 = it; if (rhand == 4) elm_object_item_disabled_set(it, EINA_TRUE); if (rhand == (_gl_focus_objects - 1)) - elm_genlist_item_append(gl, api->itc2, (void*)(uintptr_t)digit1, + elm_genlist_item_append(gl, itc2, (void*)(uintptr_t)digit1, NULL, ELM_GENLIST_ITEM_TREE, NULL, NULL); } } - elm_genlist_item_class_free(api->itc1); - elm_genlist_item_class_free(api->itc2); + elm_genlist_item_class_free(itc); + elm_genlist_item_class_free(itc1); + elm_genlist_item_class_free(itc2); // Options - _test_genlist_focus_option_panel_create(win, bx, gl, it_0, it_2); + _test_genlist_focus_option_panel_create(win, bx, gl, it_1, it_2); evas_object_resize(win, 420, 600); evas_object_show(win); --
