forked from enlightenment/efl
elm_gengrid: improve genlist behaviour
the new behaviour is (as genlist in the previous commit): - focus the first item when down is pressed - focus the last item when up is pressed - do not go into the widget with tab or ctrl+tab and just return immidiantly fixes T6805 Reviewed-by: YeongJong Lee <yj34.lee@samsung.com> Differential Revision: https://phab.enlightenment.org/D7454
This commit is contained in:
parent
5e0a602ee8
commit
27e5e8fa75
|
@ -4260,6 +4260,49 @@ _elm_gengrid_efl_ui_focus_manager_setup_on_first_touch(Eo *obj, Elm_Gengrid_Data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Efl_Ui_Focus_Object*
|
||||||
|
_select_candidate(Eo *obj, Elm_Gengrid_Data *pd, Efl_Ui_Focus_Direction direction)
|
||||||
|
{
|
||||||
|
Elm_Object_Item *first = elm_gengrid_first_item_get(obj);
|
||||||
|
Elm_Object_Item *last = elm_gengrid_last_item_get(obj);
|
||||||
|
|
||||||
|
switch(direction)
|
||||||
|
{
|
||||||
|
case EFL_UI_FOCUS_DIRECTION_DOWN:
|
||||||
|
case EFL_UI_FOCUS_DIRECTION_RIGHT:
|
||||||
|
elm_object_item_focus_set(first, EINA_TRUE);
|
||||||
|
return obj;
|
||||||
|
break;
|
||||||
|
case EFL_UI_FOCUS_DIRECTION_UP:
|
||||||
|
case EFL_UI_FOCUS_DIRECTION_LEFT:
|
||||||
|
elm_object_item_focus_set(last, EINA_TRUE);
|
||||||
|
return obj;
|
||||||
|
break;
|
||||||
|
case EFL_UI_FOCUS_DIRECTION_NEXT:
|
||||||
|
case EFL_UI_FOCUS_DIRECTION_PREVIOUS:
|
||||||
|
//do not go further with logical movement
|
||||||
|
return NULL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ERR("Uncaught focus direction");
|
||||||
|
return NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EOLIAN static Efl_Ui_Focus_Object*
|
||||||
|
_elm_gengrid_efl_ui_focus_manager_move(Eo *obj, Elm_Gengrid_Data *pd, Efl_Ui_Focus_Direction direction)
|
||||||
|
{
|
||||||
|
if (efl_ui_focus_manager_focus_get(obj) == obj)
|
||||||
|
{
|
||||||
|
return _select_candidate(obj, pd, direction);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return efl_ui_focus_manager_move(efl_super(obj, MY_CLASS), direction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EOLIAN static Efl_Ui_Focus_Object*
|
EOLIAN static Efl_Ui_Focus_Object*
|
||||||
_elm_gengrid_efl_ui_focus_manager_manager_focus_get(const Eo *obj, Elm_Gengrid_Data *pd)
|
_elm_gengrid_efl_ui_focus_manager_manager_focus_get(const Eo *obj, Elm_Gengrid_Data *pd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -529,6 +529,7 @@ class Elm.Gengrid (Efl.Ui.Layout, Efl.Ui.Focus.Composition, Elm.Interface_Scroll
|
||||||
Efl.Ui.Widget.focus_state_apply;
|
Efl.Ui.Widget.focus_state_apply;
|
||||||
Efl.Ui.Focus.Manager.setup_on_first_touch;
|
Efl.Ui.Focus.Manager.setup_on_first_touch;
|
||||||
Efl.Ui.Focus.Manager.manager_focus { get; }
|
Efl.Ui.Focus.Manager.manager_focus { get; }
|
||||||
|
Efl.Ui.Focus.Manager.move;
|
||||||
}
|
}
|
||||||
events {
|
events {
|
||||||
realized: Efl.Object; [[Called when gengrid realized]]
|
realized: Efl.Object; [[Called when gengrid realized]]
|
||||||
|
|
Loading…
Reference in New Issue