efl_ui_focus_manager: make focus a property

This commit is contained in:
Marcel Hollerbach 2017-07-18 12:40:17 +02:00
parent d4cd85aa55
commit df3d0e3d7b
13 changed files with 36 additions and 46 deletions

View File

@ -59,21 +59,13 @@ interface Efl.Ui.Focus.Manager {
}
return : Efl.Ui.Focus.Object; [[Next object to focus]]
}
focus {
[[Make the given object the currently focused object in this manager.
@property focus {
[[The element which is currently focused by this manager]]
The object has to be part of this manager object.
If you want to focus something in the redirect manager, just call
the function on the redirect manager.
]]
params {
focus : Efl.Ui.Focus.Object @nonull; [[The object to be focused. Pass the root to get the first available none logical registered child focused]]
values {
focus : Efl.Ui.Focus.Object @nonull;
}
}
focused {
[[Return the currently focused element of this manager.]]
return : Efl.Ui.Focus.Object; [[The object that has focus.]]
}
@property redirect {
[[Add a another manager to serve the move requests.

View File

@ -1184,7 +1184,7 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_request_move(Eo *obj EINA_UNUSED
}
EOLIAN static void
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd, Efl_Ui_Focus_Object *focus)
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd, Efl_Ui_Focus_Object *focus)
{
Node *node;
Node *old_focus;
@ -1250,7 +1250,7 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_focus(Eo *obj, Efl_Ui_Focus_Mana
Efl_Ui_Focus_Object *root;
root = efl_ui_focus_manager_root_get(node->redirect_manager);
efl_ui_focus_manager_focus(node->redirect_manager, root);
efl_ui_focus_manager_focus_set(node->redirect_manager, root);
}
//now check if this is also a listener object
@ -1271,7 +1271,7 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_move(Eo *obj EINA_UNUSED, Efl_Ui
{
Efl_Ui_Focus_Object *old_candidate = NULL;
candidate = efl_ui_focus_manager_move(pd->redirect, direction);
old_candidate = efl_ui_focus_manager_focused(pd->redirect);
old_candidate = efl_ui_focus_manager_focus_get(pd->redirect);
if (!candidate)
{
@ -1289,7 +1289,7 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_move(Eo *obj EINA_UNUSED, Efl_Ui
{
n = T(n).parent;
new_candidate = _request_move(obj, pd, direction, n);
efl_ui_focus_manager_focus(obj, new_candidate);
efl_ui_focus_manager_focus_set(obj, new_candidate);
candidate = new_candidate;
}
}
@ -1302,7 +1302,7 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_move(Eo *obj EINA_UNUSED, Efl_Ui
if (new_candidate)
{
//redirect does not have smth. but we do have.
efl_ui_focus_manager_focus(obj, new_candidate);
efl_ui_focus_manager_focus_set(obj, new_candidate);
}
candidate = new_candidate;
}
@ -1314,7 +1314,7 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_move(Eo *obj EINA_UNUSED, Efl_Ui
candidate = efl_ui_focus_manager_request_move(obj, direction);
if (candidate)
efl_ui_focus_manager_focus(obj, candidate);
efl_ui_focus_manager_focus_set(obj, candidate);
}
F_DBG("Manager: %p moved to %p %s in direction %d", obj, candidate, efl_class_name_get(candidate), direction);
@ -1378,7 +1378,7 @@ _convert(Eina_List *node_list)
}
EOLIAN static Efl_Ui_Focus_Object*
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focused(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Manager_Calc_Data *pd)
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_get(Eo *obj EINA_UNUSED, Efl_Ui_Focus_Manager_Calc_Data *pd)
{
Node *upper = NULL;

View File

@ -92,8 +92,7 @@ class Efl.Ui.Focus.Manager.Calc (Efl.Object, Efl.Ui.Focus.Manager) {
class.destructor;
Efl.Ui.Focus.Manager.move;
Efl.Ui.Focus.Manager.request_move;
Efl.Ui.Focus.Manager.focus;
Efl.Ui.Focus.Manager.focused;
Efl.Ui.Focus.Manager.focus {get; set;}
Efl.Ui.Focus.Manager.redirect {set; get;}
Efl.Ui.Focus.Manager.border_elements {get;}
Efl.Ui.Focus.Manager.root {set; get;}

View File

@ -65,16 +65,16 @@ _efl_ui_focus_manager_root_focus_efl_ui_focus_manager_calc_unregister(Eo *obj, E
EOLIAN static void
_efl_ui_focus_manager_root_focus_efl_ui_focus_manager_focus(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd, Efl_Ui_Focus_Object *focus)
_efl_ui_focus_manager_root_focus_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd, Efl_Ui_Focus_Object *focus)
{
efl_ui_focus_manager_focus(efl_super(obj, MY_CLASS), _trap(pd, focus));
efl_ui_focus_manager_focus_set(efl_super(obj, MY_CLASS), _trap(pd, focus));
}
EOLIAN static Efl_Ui_Focus_Object*
_efl_ui_focus_manager_root_focus_efl_ui_focus_manager_focused(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd)
_efl_ui_focus_manager_root_focus_efl_ui_focus_manager_focus_get(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd)
{
return _trap(pd, efl_ui_focus_manager_focused(efl_super(obj, MY_CLASS)));
return _trap(pd, efl_ui_focus_manager_focus_get(efl_super(obj, MY_CLASS)));
}

View File

@ -3,8 +3,7 @@ class Efl.Ui.Focus.Manager.Root_Focus(Efl.Ui.Focus.Manager.Calc) {
implements {
Efl.Ui.Focus.Manager.Calc.register;
Efl.Ui.Focus.Manager.Calc.unregister;
Efl.Ui.Focus.Manager.focus;
Efl.Ui.Focus.Manager.focused;
Efl.Ui.Focus.Manager.focus {set; get;}
Efl.Ui.Focus.Manager.fetch;
Efl.Ui.Focus.Manager.logical_end;
Efl.Ui.Focus.Manager.border_elements {get;}

View File

@ -45,7 +45,7 @@ _focus_changed(void *data, const Efl_Event *event)
//if there is already the redirect, ignore this focus request
if (efl_ui_focus_manager_redirect_get(manager)) return;
efl_ui_focus_manager_focus(m, event->object);
efl_ui_focus_manager_focus_set(m, event->object);
}
static void

View File

@ -1729,7 +1729,7 @@ _key_action_move(Evas_Object *obj, const char *params)
Efl_Ui_Focus_Object *root;
root = efl_ui_focus_manager_root_get(obj);
efl_ui_focus_manager_focus(obj, root);
efl_ui_focus_manager_focus_set(obj, root);
}
if (!o && focus_dir == EFL_UI_FOCUS_DIRECTION_PREV)
@ -1737,7 +1737,7 @@ _key_action_move(Evas_Object *obj, const char *params)
Efl_Ui_Focus_Object *last;
last = efl_ui_focus_manager_logical_end(obj);
efl_ui_focus_manager_focus(obj, last);
efl_ui_focus_manager_focus_set(obj, last);
}
return EINA_TRUE;

View File

@ -4700,12 +4700,12 @@ _elm_interface_scrollable_efl_ui_focus_manager_border_elements_get(Eo *obj, Elm_
}
EOLIAN static void
_elm_interface_scrollable_efl_ui_focus_manager_focus(Eo *obj, Elm_Scrollable_Smart_Interface_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *focus)
_elm_interface_scrollable_efl_ui_focus_manager_focus_set(Eo *obj, Elm_Scrollable_Smart_Interface_Data *pd EINA_UNUSED, Efl_Ui_Focus_Object *focus)
{
Eina_Rectangle geom;
Eina_Rectangle obj_geom;
efl_ui_focus_manager_focus(efl_super(obj, MY_SCROLLABLE_INTERFACE), focus);
efl_ui_focus_manager_focus_set(efl_super(obj, MY_SCROLLABLE_INTERFACE), focus);
if (!focus) return;

View File

@ -681,7 +681,7 @@ mixin Elm.Interface_Scrollable(Efl.Ui.Scrollable, Efl.Canvas.Group, Efl.Ui.Focus
class.constructor;
Efl.Object.constructor;
Efl.Ui.Focus.Manager.border_elements { get; }
Efl.Ui.Focus.Manager.focus;
Efl.Ui.Focus.Manager.focus {set; }
Elm.Widget.focus_manager_factory;
}
events {

View File

@ -164,7 +164,7 @@ _elm_inwin_efl_gfx_visible_set(Eo *obj, Elm_Inwin_Data *pd, Eina_Bool v)
pd->registered_manager = efl_ui_focus_user_manager_get(obj);
efl_ui_focus_manager_redirect_set(pd->registered_manager, obj);
efl_ui_focus_manager_focus(pd->manager, obj);
efl_ui_focus_manager_focus_set(pd->manager, obj);
pd->registered = EINA_TRUE;
}
else if (!v && pd->registered)
@ -183,9 +183,9 @@ _elm_inwin_efl_ui_focus_manager_move(Eo *obj, Elm_Inwin_Data *pd, Efl_Ui_Focus_D
return ret;
if ((direction == EFL_UI_FOCUS_DIRECTION_PREV) || (direction == EFL_UI_FOCUS_DIRECTION_NEXT))
efl_ui_focus_manager_focus(pd->manager, obj);
efl_ui_focus_manager_focus_set(pd->manager, obj);
return efl_ui_focus_manager_focused(obj);
return efl_ui_focus_manager_focus_get(obj);
}

View File

@ -134,7 +134,7 @@ _key_action_move(Evas_Object *obj, const char *params)
Efl_Ui_Focus_Object *focused;
Eina_Rectangle focused_geom, viewport;
focused = efl_ui_focus_manager_focused(obj);
focused = efl_ui_focus_manager_focus_get(obj);
if (focused &&
(!strcmp(dir, "next") ||

View File

@ -4349,7 +4349,7 @@ _elm_widget_focus_mouse_up_handle(Eo *obj, Elm_Widget_Smart_Data *pd)
}
efl_ui_focus_manager_focus(pd->focus.manager, obj);
efl_ui_focus_manager_focus_set(pd->focus.manager, obj);
}
}

View File

@ -62,15 +62,15 @@ START_TEST(pos_check)
efl_ui_focus_manager_calc_register(m, east, root, NULL);
#define CHECK(obj, r,l,u,d) \
efl_ui_focus_manager_focus(m, obj); \
efl_ui_focus_manager_focus_set(m, obj); \
ck_assert_ptr_eq(efl_ui_focus_manager_move(m, EFL_UI_FOCUS_DIRECTION_RIGHT), r); \
efl_ui_focus_manager_focus(m, obj); \
efl_ui_focus_manager_focus_set(m, obj); \
ck_assert_ptr_eq(efl_ui_focus_manager_move(m, EFL_UI_FOCUS_DIRECTION_LEFT), l); \
efl_ui_focus_manager_focus(m, obj); \
efl_ui_focus_manager_focus_set(m, obj); \
ck_assert_ptr_eq(efl_ui_focus_manager_move(m, EFL_UI_FOCUS_DIRECTION_UP), u); \
efl_ui_focus_manager_focus(m, obj); \
efl_ui_focus_manager_focus_set(m, obj); \
ck_assert_ptr_eq(efl_ui_focus_manager_move(m, EFL_UI_FOCUS_DIRECTION_DOWN), d); \
efl_ui_focus_manager_focus(m, obj);
efl_ui_focus_manager_focus_set(m, obj);
CHECK(middle, east, west, north, south)
CHECK(east, NULL, middle, NULL, NULL)
@ -109,7 +109,7 @@ START_TEST(redirect)
efl_ui_focus_manager_calc_register(m2, two, root2, NULL);
efl_ui_focus_manager_redirect_set(m, m2);
efl_ui_focus_manager_focus(m2, one);
efl_ui_focus_manager_focus_set(m2, one);
ck_assert_ptr_eq(efl_ui_focus_manager_move(m, EFL_UI_FOCUS_DIRECTION_RIGHT), two);
@ -203,7 +203,7 @@ START_TEST(logical_chain)
efl_ui_focus_manager_calc_register(m, subchild22, child3, NULL);
efl_ui_focus_manager_calc_register(m, subchild23, child3, NULL);
efl_ui_focus_manager_focus(m, root);
efl_ui_focus_manager_focus_set(m, root);
Efl_Object *logical_chain[] = {
child1, subchild11, subchild12, subchild13,
@ -254,7 +254,7 @@ START_TEST(redirect_param)
);
efl_ui_focus_manager_calc_register(m, child, root, m2);
efl_ui_focus_manager_focus(m, child);
efl_ui_focus_manager_focus_set(m, child);
ck_assert_ptr_eq(efl_ui_focus_manager_redirect_get(m), m2);