diff --git a/data/elementary/objects/test.edc b/data/elementary/objects/test.edc index 6574ab3adf..cef0249d98 100644 --- a/data/elementary/objects/test.edc +++ b/data/elementary/objects/test.edc @@ -1011,4 +1011,46 @@ collections { } } } + group { "focus_test_6"; + parts { + rect { "list_bg"; + description { state: "default"; + color: 200 0 0 100; + rel1.to: "list_swallow"; + rel2.to: "list_swallow"; + } + } + rect { "box_bg"; + description { state: "default"; + color: 0 200 0 100; + rel1.to: "box"; + rel2.to: "box"; + } + } + box { "box"; + description { state: "default"; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.1; + box { + layout: "horizontal"; + padding: 4 4; + align: 1.0 0.5; + min: 1 0; + } + } + } + swallow { "list_swallow"; + description { state: "default"; + rel1.relative: 0.0 0.2; + rel2.relative: 0.5 1.0; + } + } + swallow { "label_swallow"; + description { state: "default"; + rel1.relative: 0.0 0.1; + rel2.relative: 1.0 0.2; + } + } + } + } } diff --git a/src/bin/elementary/test.c b/src/bin/elementary/test.c index eeb8275db2..1f75b930cb 100644 --- a/src/bin/elementary/test.c +++ b/src/bin/elementary/test.c @@ -249,6 +249,7 @@ void test_focus_object_style(void *data, Evas_Object *obj, void *event_info); void test_focus_object_policy(void *data, Evas_Object *obj, void *event_info); void test_focus4(void *data, Evas_Object *obj, void *event_info); void test_focus5(void *data, Evas_Object *obj, void *event_info); +void test_focus6(void *data, Evas_Object *obj, void *event_info); void test_flipselector(void *data, Evas_Object *obj, void *event_info); void test_diskselector(void *data, Evas_Object *obj, void *event_info); void test_colorselector(void *data, Evas_Object *obj, void *event_info); @@ -1102,6 +1103,7 @@ add_tests: ADD_TEST(NULL, "Focus", "Focus Object Policy", test_focus_object_policy); ADD_TEST(NULL, "Focus", "Focus 4", test_focus4); ADD_TEST(NULL, "Focus", "Focus 5", test_focus5); + ADD_TEST(NULL, "Focus", "Focus 6", test_focus6); //------------------------------// ADD_TEST(NULL, "Naviframe", "Naviframe", test_naviframe); diff --git a/src/bin/elementary/test_focus.c b/src/bin/elementary/test_focus.c index b5a6f9329c..6336c75a9c 100644 --- a/src/bin/elementary/test_focus.c +++ b/src/bin/elementary/test_focus.c @@ -1077,3 +1077,75 @@ test_focus5(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_in evas_object_resize(win, 400, 400); evas_object_show(win); } + +/**** focus 6 ****/ +static char * +_focus6_gl_text_get(void *data, Evas_Object *obj EINA_UNUSED, + const char *part EINA_UNUSED) +{ + char buf[32]; + snprintf(buf, sizeof(buf), "Focus item %d", (int)(uintptr_t)data); + return strdup(buf); +} +void +test_focus6(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *win, *ly, *lb, *btn, *gl; + Elm_Genlist_Item_Class *itc; + Elm_Object_Item *it; + char buf[PATH_MAX]; + int i; + + win = elm_win_util_standard_add("focus6", "Focus 6"); + elm_win_autodel_set(win, EINA_TRUE); + elm_win_focus_highlight_enabled_set(win, EINA_TRUE); + + // main layout + ly = elm_layout_add(win); + snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get()); + elm_layout_file_set(ly, buf, "focus_test_6"); + evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_win_resize_object_add(win, ly); + evas_object_show(ly); + + lb = elm_label_add(ly); + elm_object_text_set(lb, "The game is to reach the buttons and the list items" + " using only the keyboard"); + elm_layout_content_set(ly, "label_swallow", lb); + + // genlist in a swallow + gl = elm_genlist_add(ly); + evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_genlist_select_mode_set(gl, ELM_OBJECT_SELECT_MODE_ALWAYS); + elm_layout_content_set(ly, "list_swallow", gl); + + itc = elm_genlist_item_class_new(); + itc->item_style = "default"; + itc->func.text_get = _focus6_gl_text_get; + for (i = 0; i < 3; i++) + { + it = elm_genlist_item_append(gl, itc, (void*)(uintptr_t)i, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + /* This is another bug! This focus item at start do not work */ + // if (i == 1) + // elm_object_item_focus_set(it, EINA_TRUE); + } + elm_genlist_item_class_free(itc); + + // 3 buttons in an edje box + for (i = 0; i < 3; i++) + { + btn = elm_button_add(ly); + elm_object_text_set(btn, "btn"); + elm_layout_box_append(ly, "box", btn); + evas_object_show(btn); + /* focus should start from second button */ + if (i == 1) + elm_object_focus_set(btn, EINA_TRUE); + } + + evas_object_resize(win, 400, 400); + evas_object_show(win); +}