summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2018-11-14 17:50:04 +0100
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2018-11-20 20:51:25 +0100
commit11a19c23b198abdf922051afe558d1d429f277a2 (patch)
treecee1a799c504e113f1bd479edfb5e14879d38d9d
parenta81540ead5feb2123ff55a3cb3a530d380e5813d (diff)
downloadefl-11a19c23b198abdf922051afe558d1d429f277a2.tar.gz
elm_gengrid: transform P233 into a testcase
the new testcase checked if the focus is correctly restored after the gengrid is focused again. And it checks that the focused_item pointer is NULLed out when the gengrid is not focused at all anymore. Differential Revision: https://phab.enlightenment.org/D7272
-rw-r--r--src/tests/elementary/elm_test_gengrid.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/tests/elementary/elm_test_gengrid.c b/src/tests/elementary/elm_test_gengrid.c
index 53f2b47750..b363ba44ab 100644
--- a/src/tests/elementary/elm_test_gengrid.c
+++ b/src/tests/elementary/elm_test_gengrid.c
@@ -6,6 +6,8 @@
#include <Elementary.h>
#include "elm_suite.h"
+static Elm_Gengrid_Item_Class *gic = NULL;
+
EFL_START_TEST (elm_gengrid_legacy_type_check)
{
Evas_Object *win, *gengrid;
@@ -88,10 +90,74 @@ EFL_START_TEST(elm_atspi_children_parent)
EFL_END_TEST
#endif
+static void
+_realized(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+ static int i = 0;
+
+ i++;
+ //we have two items - each of them are getting realized unrealized and again realized.
+ if (i == 4)
+ ecore_main_loop_quit();
+}
+
+EFL_START_TEST (elm_gengrid_focus)
+{
+ Evas_Object *win, *grid, *bx, *bt;
+ Elm_Object_Item *it;
+
+ win = win_add_focused();
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ grid = elm_gengrid_add(win);
+ elm_gengrid_item_size_set(grid, 10, 10);
+ evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_min_set(grid, 600, 600);
+
+ elm_box_pack_end(bx, grid);
+ evas_object_show(grid);
+
+ gic = elm_gengrid_item_class_new();
+ gic->item_style = "default";
+
+ elm_gengrid_item_append(grid, gic, NULL, NULL, NULL);
+ elm_gengrid_item_append(grid, gic, NULL, NULL, NULL);
+ elm_gengrid_item_append(grid, gic, NULL, NULL, NULL);
+ it = elm_gengrid_item_append(grid, gic, NULL, NULL, NULL);
+ evas_object_smart_callback_add(grid, "realized", _realized, NULL);
+
+ elm_object_item_focus_set(it, EINA_TRUE);
+ elm_object_focus_set(grid, EINA_TRUE);
+
+ bt = elm_button_add(win);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+
+ evas_object_resize(win, 600, 600);
+ evas_object_show(win);
+
+ ecore_main_loop_begin();
+
+ ck_assert_ptr_eq(elm_object_focused_item_get(grid), it);
+ elm_object_focus_set(bt, EINA_TRUE);
+ ck_assert_ptr_eq(elm_object_focused_item_get(grid), NULL);
+ ck_assert_int_eq(elm_object_focus_get(grid), EINA_FALSE);
+ elm_object_focus_set(grid, EINA_TRUE);
+ ck_assert_ptr_eq(elm_object_focused_item_get(grid), it);
+ ck_assert_int_eq(elm_object_focus_get(grid), EINA_TRUE);
+}
+EFL_END_TEST
+
void elm_test_gengrid(TCase *tc)
{
tcase_add_test(tc, elm_gengrid_legacy_type_check);
tcase_add_test(tc, elm_atspi_role_get);
+ tcase_add_test(tc, elm_gengrid_focus);
#if 0
tcase_add_test(tc, elm_atspi_children_parent);
#endif