forked from enlightenment/efl
focus_tests: fix the test suite
this brings back the working testsuite and fixes a bug in the submanager.
This commit is contained in:
parent
3dfc546a2f
commit
800390bcb0
|
@ -1346,7 +1346,7 @@ tests_elementary_elm_suite_SOURCES = \
|
|||
|
||||
tests/elementary/tests_elementary_elm_suite-elm_test_focus.$(OBJEXT): tests/elementary/focus_test.eo.c tests/elementary/focus_test.eo.h
|
||||
|
||||
tests/elementary/tests_elementary_elm_suite-elm_test_focus_sub.$(OBJEXT): tests/elementary/focus_test_sub.eo.c tests/elementary/focus_test_sub.eo.h
|
||||
tests/elementary/tests_elementary_elm_suite-elm_test_focus_sub.$(OBJEXT): tests/elementary/focus_test_sub_main.eo.c tests/elementary/focus_test_sub_main.eo.h
|
||||
|
||||
tests_elementary_elm_suite_CPPFLAGS = \
|
||||
-DTESTS_BUILD_DIR=\"${top_builddir}/src/tests/elementary\" \
|
||||
|
|
|
@ -175,33 +175,41 @@ _logical_manager_change(void *data EINA_UNUSED, const Efl_Event *ev)
|
|||
}
|
||||
|
||||
static void
|
||||
_manager_change(void *data, const Efl_Event *ev)
|
||||
_flush_manager(Eo *obj, Efl_Ui_Focus_Manager_Sub_Data *pd)
|
||||
{
|
||||
MY_DATA(data, pd);
|
||||
|
||||
Efl_Ui_Focus_Manager *manager;
|
||||
Efl_Ui_Focus_Object *logical;
|
||||
Efl_Ui_Focus_Object *logical, *real_object;
|
||||
Efl_Ui_Focus_User *b;
|
||||
Eina_List *n;
|
||||
|
||||
logical = efl_ui_focus_user_parent_get(ev->object);
|
||||
manager = efl_ui_focus_user_manager_get(ev->object);
|
||||
real_object = efl_parent_get(obj);
|
||||
|
||||
logical = efl_ui_focus_user_parent_get(real_object);
|
||||
manager = efl_ui_focus_user_manager_get(real_object);
|
||||
|
||||
//unregister from the old
|
||||
efl_event_callback_array_del(pd->manager, parent_manager(), data);
|
||||
efl_event_callback_array_add(manager, parent_manager(), data);
|
||||
efl_event_callback_array_del(pd->manager, parent_manager(), obj);
|
||||
efl_event_callback_array_add(manager, parent_manager(), obj);
|
||||
|
||||
EINA_LIST_FOREACH(pd->current_border , n, b)
|
||||
{
|
||||
if (b == ev->object) continue;
|
||||
if (b == real_object) continue;
|
||||
|
||||
_unregister(data, manager, b);
|
||||
_register(data, manager, b, logical);
|
||||
_unregister(obj, manager, b);
|
||||
_register(obj, manager, b, logical);
|
||||
}
|
||||
//unregister the old manager, use the new
|
||||
pd->manager = manager;
|
||||
}
|
||||
|
||||
static void
|
||||
_manager_change(void *data, const Efl_Event *ev EINA_UNUSED)
|
||||
{
|
||||
MY_DATA(data, pd);
|
||||
|
||||
_flush_manager(data, pd);
|
||||
}
|
||||
|
||||
EFL_CALLBACKS_ARRAY_DEFINE(self_manager,
|
||||
{EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, _self_manager_dirty},
|
||||
{EFL_UI_FOCUS_USER_EVENT_LOGICAL_CHANGED, _logical_manager_change},
|
||||
|
@ -223,6 +231,8 @@ _efl_ui_focus_manager_sub_efl_object_parent_set(Eo *obj, Efl_Ui_Focus_Manager_Su
|
|||
new_parent = efl_parent_get(obj);
|
||||
_efl_ui_focus_manager_redirect_events_add(obj, new_parent);
|
||||
efl_event_callback_array_add(new_parent, self_manager(), obj);
|
||||
|
||||
_flush_manager(obj, pd);
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Object*
|
||||
|
|
|
@ -93,6 +93,7 @@ START_TEST(redirect)
|
|||
elm_init(1, NULL);
|
||||
|
||||
TEST_OBJ_NEW(root, 0, 0, 20, 20);
|
||||
TEST_OBJ_NEW(root2, 0, 0, 20, 20);
|
||||
TEST_OBJ_NEW(one, 0, 0, 20, 20);
|
||||
TEST_OBJ_NEW(two, 20, 0, 20, 20);
|
||||
|
||||
|
@ -101,10 +102,11 @@ START_TEST(redirect)
|
|||
);
|
||||
|
||||
Efl_Ui_Focus_Manager *m2 = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, NULL,
|
||||
efl_ui_focus_manager_root_set(efl_added, one)
|
||||
efl_ui_focus_manager_root_set(efl_added, root2)
|
||||
);
|
||||
|
||||
efl_ui_focus_manager_register(m2, two, one, NULL);
|
||||
efl_ui_focus_manager_register(m2, one, root2, NULL);
|
||||
efl_ui_focus_manager_register(m2, two, root2, NULL);
|
||||
|
||||
efl_ui_focus_manager_redirect_set(m, m2);
|
||||
efl_ui_focus_manager_focus(m2, one);
|
||||
|
@ -205,7 +207,7 @@ START_TEST(logical_chain)
|
|||
|
||||
Efl_Object *logical_chain[] = {
|
||||
child1, subchild11, subchild12, subchild13,
|
||||
child2, subchild21, subchild22, subchild23, root, NULL
|
||||
child2, subchild21, subchild22, subchild23, NULL
|
||||
};
|
||||
for (i = 0; logical_chain[i]; ++i)
|
||||
{
|
||||
|
@ -319,7 +321,6 @@ START_TEST(order_check)
|
|||
order = eina_list_append(order, child1);
|
||||
ck_assert_int_eq(efl_ui_focus_manager_update_children(m, root, order), 1);
|
||||
|
||||
eina_list_free(order);
|
||||
order = NULL;
|
||||
|
||||
//negativ check
|
||||
|
|
|
@ -1,23 +1,30 @@
|
|||
#include "elm_test_focus_common.h"
|
||||
#include "focus_test_sub.eo.h"
|
||||
#include "focus_test_sub_main.eo.h"
|
||||
|
||||
typedef struct {
|
||||
|
||||
} Focus_Test_Sub_Data;
|
||||
} Focus_Test_Sub_Main_Data;
|
||||
|
||||
|
||||
EOLIAN static void
|
||||
_focus_test_sub_efl_ui_focus_object_geometry_get(Eo *obj EINA_UNUSED, Focus_Test_Sub_Data *pd EINA_UNUSED, Eina_Rectangle *rect EINA_UNUSED)
|
||||
_focus_test_sub_main_efl_ui_focus_object_geometry_get(Eo *obj EINA_UNUSED, Focus_Test_Sub_Main_Data *pd EINA_UNUSED, Eina_Rectangle *rect)
|
||||
{
|
||||
rect->y = rect->x = 0;
|
||||
rect->w = rect->h = 20;
|
||||
EINA_RECTANGLE_SET(rect, 0, 0, 20, 20);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_focus_test_sub_efl_ui_focus_object_focus_get(Eo *obj EINA_UNUSED, Focus_Test_Sub_Data *pd EINA_UNUSED)
|
||||
EOLIAN static Efl_Ui_Focus_Manager*
|
||||
_focus_test_sub_main_efl_ui_focus_user_manager_get(Eo *obj, Focus_Test_Sub_Main_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EINA_FALSE;
|
||||
return efl_key_data_get(obj, "__user_manager");
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Ui_Focus_Object*
|
||||
_focus_test_sub_main_efl_ui_focus_user_parent_get(Eo *obj, Focus_Test_Sub_Main_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return efl_key_data_get(obj, "__user_parent");
|
||||
}
|
||||
|
||||
|
||||
static Eina_List *registered;
|
||||
static Eina_List *unregistered;
|
||||
|
||||
|
@ -54,7 +61,7 @@ _set_equal(Eina_List *a, Eina_List *b)
|
|||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
#include "focus_test_sub.eo.c"
|
||||
#include "focus_test_sub_main.eo.c"
|
||||
|
||||
static void
|
||||
_setup(Efl_Ui_Focus_Manager **m, Efl_Ui_Focus_Manager_Sub **sub, Efl_Ui_Focus_Object **r)
|
||||
|
@ -78,13 +85,19 @@ _setup(Efl_Ui_Focus_Manager **m, Efl_Ui_Focus_Manager_Sub **sub, Efl_Ui_Focus_Ob
|
|||
|
||||
efl_object_override(manager, &manager_tracker);
|
||||
|
||||
Efl_Ui_Focus_Manager_Sub *subm = efl_add(FOCUS_TEST_SUB_CLASS, manager,
|
||||
Focus_Test_Sub_Main *main = efl_add(FOCUS_TEST_SUB_MAIN_CLASS, NULL);
|
||||
|
||||
efl_key_data_set(main, "__user_manager", manager);
|
||||
efl_key_data_set(main, "__user_parent", root_manager);
|
||||
|
||||
Efl_Ui_Focus_Manager_Sub *subm = efl_add(EFL_UI_FOCUS_MANAGER_SUB_CLASS, main,
|
||||
efl_ui_focus_manager_root_set(efl_added, root)
|
||||
);
|
||||
|
||||
efl_event_callback_call(manager, EFL_UI_FOCUS_MANAGER_EVENT_PRE_FLUSH, NULL);
|
||||
efl_composite_attach(main, subm);
|
||||
efl_ui_focus_manager_register_logical(manager, main, root_manager, subm);
|
||||
|
||||
*sub = subm;
|
||||
*sub = main;
|
||||
*m = manager;
|
||||
*r = root;
|
||||
}
|
||||
|
@ -102,7 +115,7 @@ START_TEST(correct_register)
|
|||
TEST_OBJ_NEW(child2, 10, 0, 10, 10);
|
||||
TEST_OBJ_NEW(child3, 0, 10, 10, 10);
|
||||
|
||||
set1 = eina_list_append(set1, sub);
|
||||
//set1 = eina_list_append(set1, sub);
|
||||
//set1 = eina_list_append(set1, root);
|
||||
set1 = eina_list_append(set1, child1);
|
||||
set1 = eina_list_append(set1, child2);
|
||||
|
@ -117,12 +130,14 @@ START_TEST(correct_register)
|
|||
ck_assert_ptr_eq(unregistered, NULL);
|
||||
fail_if(!_set_equal(registered, set1));
|
||||
|
||||
efl_del(sub);
|
||||
efl_del(manager);
|
||||
efl_del(root);
|
||||
efl_ui_focus_manager_unregister(sub, child1);
|
||||
efl_ui_focus_manager_unregister(sub, child2);
|
||||
efl_ui_focus_manager_unregister(sub, child3);
|
||||
efl_del(child1);
|
||||
efl_del(child2);
|
||||
efl_del(child3);
|
||||
efl_del(sub);
|
||||
efl_del(manager);
|
||||
elm_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
class Focus.Test.Sub(Efl.Ui.Focus.Manager.Sub) {
|
||||
implements {
|
||||
Efl.Ui.Focus.Object.geometry_get;
|
||||
Efl.Ui.Focus.Object.focus.get;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
class Focus.Test.Sub.Main(Efl.Object, Efl.Ui.Focus.User, Efl.Ui.Focus.Object, Efl.Ui.Focus.Manager) {
|
||||
implements {
|
||||
Efl.Ui.Focus.User.manager.get;
|
||||
Efl.Ui.Focus.User.parent.get;
|
||||
Efl.Ui.Focus.Object.geometry_get;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue