forked from enlightenment/efl
efl_ui_focus_util: add helper for getting the highest manager objekt
This commit is contained in:
parent
e5001b2cf3
commit
9d5a9cf2e1
|
@ -53,4 +53,14 @@ _efl_ui_focus_util_focus(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Ui_Focus
|
||||||
} while (m);
|
} while (m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN static Efl_Ui_Focus_Manager*
|
||||||
|
_efl_ui_focus_util_active_manager(Eo *obj EINA_UNUSED, void *pd EINA_UNUSED, Efl_Ui_Focus_Manager *manager)
|
||||||
|
{
|
||||||
|
while (efl_ui_focus_manager_redirect_get(manager))
|
||||||
|
manager = efl_ui_focus_manager_redirect_get(manager);
|
||||||
|
|
||||||
|
return manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#include "efl_ui_focus_util.eo.c"
|
#include "efl_ui_focus_util.eo.c"
|
||||||
|
|
|
@ -7,5 +7,12 @@ class Efl.Ui.Focus.Util(Efl.Object) {
|
||||||
focus_elem : Efl.Ui.Focus.Object; [[Focus element]]
|
focus_elem : Efl.Ui.Focus.Object; [[Focus element]]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
active_manager @class {
|
||||||
|
[[Get the highest manager in the redirect property]]
|
||||||
|
params {
|
||||||
|
manager : Efl.Ui.Focus.Manager;
|
||||||
|
}
|
||||||
|
return: Efl.Ui.Focus.Manager;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -277,17 +277,6 @@ EFL_START_TEST(logical_chain)
|
||||||
}
|
}
|
||||||
EFL_END_TEST
|
EFL_END_TEST
|
||||||
|
|
||||||
static Efl_Ui_Focus_Manager*
|
|
||||||
_upper_manager(Efl_Ui_Focus_Manager *m)
|
|
||||||
{
|
|
||||||
Efl_Ui_Focus_Manager *manager = m;
|
|
||||||
|
|
||||||
while (efl_ui_focus_manager_redirect_get(manager))
|
|
||||||
manager = efl_ui_focus_manager_redirect_get(manager);
|
|
||||||
|
|
||||||
return manager;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_check_chain(Efl_Ui_Focus_Manager *m, Efl_Ui_Focus_Object *objects[])
|
_check_chain(Efl_Ui_Focus_Manager *m, Efl_Ui_Focus_Object *objects[])
|
||||||
{
|
{
|
||||||
|
@ -304,7 +293,7 @@ _check_chain(Efl_Ui_Focus_Manager *m, Efl_Ui_Focus_Object *objects[])
|
||||||
efl_ui_focus_manager_reset_history(m);
|
efl_ui_focus_manager_reset_history(m);
|
||||||
efl_ui_focus_manager_setup_on_first_touch(m, EFL_UI_FOCUS_DIRECTION_NEXT, root);
|
efl_ui_focus_manager_setup_on_first_touch(m, EFL_UI_FOCUS_DIRECTION_NEXT, root);
|
||||||
}
|
}
|
||||||
next = efl_ui_focus_manager_focus_get(_upper_manager(m));
|
next = efl_ui_focus_manager_focus_get(efl_ui_focus_util_active_manager(EFL_UI_FOCUS_UTIL_CLASS, m));
|
||||||
|
|
||||||
ck_assert_ptr_eq(next, objects[i]);
|
ck_assert_ptr_eq(next, objects[i]);
|
||||||
}
|
}
|
||||||
|
@ -324,7 +313,7 @@ _check_chain(Efl_Ui_Focus_Manager *m, Efl_Ui_Focus_Object *objects[])
|
||||||
efl_ui_focus_manager_setup_on_first_touch(m, EFL_UI_FOCUS_DIRECTION_PREVIOUS, root);
|
efl_ui_focus_manager_setup_on_first_touch(m, EFL_UI_FOCUS_DIRECTION_PREVIOUS, root);
|
||||||
}
|
}
|
||||||
|
|
||||||
prev = efl_ui_focus_manager_focus_get(_upper_manager(m));
|
prev = efl_ui_focus_manager_focus_get(efl_ui_focus_util_active_manager(EFL_UI_FOCUS_UTIL_CLASS, m));
|
||||||
ck_assert_ptr_eq(prev, objects[i - 1]);
|
ck_assert_ptr_eq(prev, objects[i - 1]);
|
||||||
}
|
}
|
||||||
ck_assert_ptr_eq(efl_ui_focus_manager_move(m, EFL_UI_FOCUS_DIRECTION_PREVIOUS), NULL);
|
ck_assert_ptr_eq(efl_ui_focus_manager_move(m, EFL_UI_FOCUS_DIRECTION_PREVIOUS), NULL);
|
||||||
|
|
Loading…
Reference in New Issue