davemds pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5c5e29daa5455bc625b8287cf2437197e49ffa2a

commit 5c5e29daa5455bc625b8287cf2437197e49ffa2a
Author: Dave Andreoli <d...@gurumeditation.it>
Date:   Fri Jan 5 18:22:53 2018 +0100

    Elm focus navigation: other 2 failing tests
    
    Added a new test "Focus 6", it's an not very
    complex elm layout: a swallowed genlist and three
    buttons in an edje box.
    
    You should be able to navigate the layout with
    just the keyboard, that is currently impossible.
    
    With the help of the mouse click you can randomly
    make the key navigation work again... this is
    mostly random.
    
    ...should help to make progress on T6453
---
 data/elementary/objects/test.edc | 42 +++++++++++++++++++++++
 src/bin/elementary/test.c        |  2 ++
 src/bin/elementary/test_focus.c  | 72 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 116 insertions(+)

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);
+}

-- 


Reply via email to