forked from enlightenment/efl
efl_ui_win: migrate to the new focus system
this means, focus requests are redirected to the new focus manager.
This commit is contained in:
parent
44e40c7c5e
commit
ef8aed0385
|
@ -1683,20 +1683,42 @@ _key_action_move(Evas_Object *obj, const char *params)
|
||||||
const char *dir = params;
|
const char *dir = params;
|
||||||
|
|
||||||
_elm_widget_focus_auto_show(obj);
|
_elm_widget_focus_auto_show(obj);
|
||||||
|
|
||||||
|
Efl_Ui_Focus_Direction focus_dir;
|
||||||
|
Efl_Ui_Focus_Object *o;
|
||||||
|
|
||||||
if (!strcmp(dir, "previous"))
|
if (!strcmp(dir, "previous"))
|
||||||
elm_widget_focus_cycle(obj, ELM_FOCUS_PREVIOUS);
|
focus_dir = EFL_UI_FOCUS_DIRECTION_PREV;
|
||||||
else if (!strcmp(dir, "next"))
|
else if (!strcmp(dir, "next"))
|
||||||
elm_widget_focus_cycle(obj, ELM_FOCUS_NEXT);
|
focus_dir = EFL_UI_FOCUS_DIRECTION_NEXT;
|
||||||
else if (!strcmp(dir, "left"))
|
else if (!strcmp(dir, "left"))
|
||||||
elm_widget_focus_cycle(obj, ELM_FOCUS_LEFT);
|
focus_dir = EFL_UI_FOCUS_DIRECTION_LEFT;
|
||||||
else if (!strcmp(dir, "right"))
|
else if (!strcmp(dir, "right"))
|
||||||
elm_widget_focus_cycle(obj, ELM_FOCUS_RIGHT);
|
focus_dir = EFL_UI_FOCUS_DIRECTION_RIGHT;
|
||||||
else if (!strcmp(dir, "up"))
|
else if (!strcmp(dir, "up"))
|
||||||
elm_widget_focus_cycle(obj, ELM_FOCUS_UP);
|
focus_dir = EFL_UI_FOCUS_DIRECTION_UP;
|
||||||
else if (!strcmp(dir, "down"))
|
else if (!strcmp(dir, "down"))
|
||||||
elm_widget_focus_cycle(obj, ELM_FOCUS_DOWN);
|
focus_dir = EFL_UI_FOCUS_DIRECTION_DOWN;
|
||||||
else return EINA_FALSE;
|
else return EINA_FALSE;
|
||||||
|
|
||||||
|
o = efl_ui_focus_manager_move(obj, focus_dir);
|
||||||
|
|
||||||
|
if (!o && focus_dir == EFL_UI_FOCUS_DIRECTION_NEXT)
|
||||||
|
{
|
||||||
|
Efl_Ui_Focus_Object *root;
|
||||||
|
|
||||||
|
root = efl_ui_focus_manager_root_get(obj);
|
||||||
|
efl_ui_focus_manager_focus(obj, root);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!o && focus_dir == EFL_UI_FOCUS_DIRECTION_PREV)
|
||||||
|
{
|
||||||
|
Efl_Ui_Focus_Object *last;
|
||||||
|
|
||||||
|
last = efl_ui_focus_manager_logical_end(obj);
|
||||||
|
efl_ui_focus_manager_focus(obj, last);
|
||||||
|
}
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5221,12 +5243,14 @@ _efl_ui_win_efl_object_constructor(Eo *obj, Efl_Ui_Win_Data *pd)
|
||||||
/* Do nothing. */
|
/* Do nothing. */
|
||||||
/* XXX: We are calling the constructor chain from the finalizer. It's
|
/* XXX: We are calling the constructor chain from the finalizer. It's
|
||||||
* really bad and hacky. Needs fixing. */
|
* really bad and hacky. Needs fixing. */
|
||||||
pd->manager = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, NULL,
|
pd->manager = efl_add(EFL_UI_FOCUS_MANAGER_CLASS, obj,
|
||||||
efl_ui_focus_manager_root_set(efl_added, obj)
|
efl_ui_focus_manager_root_set(efl_added, obj)
|
||||||
);
|
);
|
||||||
|
|
||||||
efl_composite_attach(obj, pd->manager);
|
efl_composite_attach(obj, pd->manager);
|
||||||
|
|
||||||
|
efl_event_callback_forwarder_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_PRE_FLUSH, obj);
|
||||||
|
efl_event_callback_forwarder_add(pd->manager, EFL_UI_FOCUS_MANAGER_EVENT_REDIRECT_CHANGED, obj);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue