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);
|
||||
}
|
||||
|
||||
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"
|
||||
|
|
|
@ -7,5 +7,12 @@ class Efl.Ui.Focus.Util(Efl.Object) {
|
|||
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
|
||||
|
||||
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
|
||||
_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_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]);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
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(efl_ui_focus_manager_move(m, EFL_UI_FOCUS_DIRECTION_PREVIOUS), NULL);
|
||||
|
|
Loading…
Reference in New Issue