diff options
author | SangHyeon Lee <sh10233.lee@samsung.com> | 2018-04-24 16:30:38 +0900 |
---|---|---|
committer | SangHyeon Lee <sh10233.lee@samsung.com> | 2018-04-24 16:31:17 +0900 |
commit | 22f4371ea71f5b4572c058b9d7ef59d4b2429d8c (patch) | |
tree | f89447fa7260a591935a80c6f9ee70393f6edb94 | |
parent | de3837b4e930771e67b06a18ef741ada03c25eae (diff) | |
download | efl-22f4371ea71f5b4572c058b9d7ef59d4b2429d8c.tar.gz |
gengrid : fallback legacy focus
-rw-r--r-- | src/lib/elementary/elm_gengrid.c | 79 | ||||
-rw-r--r-- | src/lib/elementary/elm_gengrid.eo | 2 |
2 files changed, 56 insertions, 25 deletions
diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index 26a7efe7ab..d74b5cb6f8 100644 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -3518,14 +3518,17 @@ _elm_gengrid_nearest_visible_item_get(Evas_Object *obj, Elm_Object_Item *eo_it) } EOLIAN static Eina_Bool -_elm_gengrid_efl_ui_widget_on_focus_update(Eo *obj, Elm_Gengrid_Data *sd, Elm_Object_Item *item) +_elm_gengrid_efl_ui_focus_object_on_focus_update(Eo *obj, Elm_Gengrid_Data *sd) { Eina_Bool int_ret = EINA_FALSE; Elm_Object_Item *eo_it = NULL; - int_ret = efl_ui_widget_on_focus_update(efl_super(obj, MY_CLASS), NULL); + int_ret = efl_ui_focus_object_on_focus_update(efl_super(obj, MY_CLASS)); if (!int_ret) return EINA_FALSE; + //Fallback Legacy Focus + if (!elm_widget_is_legacy(obj)) return EINA_TRUE; + if (elm_widget_focus_get(obj) && (sd->selected) && (!sd->last_selected_item)) { @@ -3535,16 +3538,13 @@ _elm_gengrid_efl_ui_widget_on_focus_update(Eo *obj, Elm_Gengrid_Data *sd, Elm_Ob if (elm_widget_focus_get(obj) && !sd->mouse_down) { - if (item) eo_it = item; - else - { - if (sd->last_focused_item) - eo_it = sd->last_focused_item; - else if (sd->last_selected_item) - eo_it = sd->last_selected_item; - else if (_elm_config->first_item_focus_on_first_focus_in) - eo_it = elm_gengrid_first_item_get(obj); - } + if (sd->last_focused_item) + eo_it = sd->last_focused_item; + else if (sd->last_selected_item) + eo_it = sd->last_selected_item; + else if (_elm_config->first_item_focus_on_first_focus_in) + eo_it = elm_gengrid_first_item_get(obj); + if (eo_it) { eo_it = _elm_gengrid_nearest_visible_item_get(obj, eo_it); @@ -3599,9 +3599,11 @@ end: static Eina_Bool _elm_gengrid_smart_focus_next_enable = EINA_FALSE; EOLIAN static Eina_Bool -_elm_gengrid_efl_ui_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *_pd EINA_UNUSED) +_elm_gengrid_efl_ui_widget_focus_next_manager_is(Eo *obj, Elm_Gengrid_Data *_pd EINA_UNUSED) { - return _elm_gengrid_smart_focus_next_enable; + //Fallback Legacy Focus + if (elm_widget_is_legacy(obj)) return _elm_gengrid_smart_focus_next_enable; + else return efl_ui_widget_focus_next_manager_is(efl_super(obj, MY_CLASS)); } EOLIAN static Eina_Bool @@ -3610,6 +3612,10 @@ _elm_gengrid_efl_ui_widget_focus_next(Eo *obj, Elm_Gengrid_Data *sd, Elm_Focus_D Eina_List *items = NULL; Elm_Gen_Item *it; + //Fallback Legacy Focus + if (!elm_widget_is_legacy(obj)) + return efl_ui_widget_focus_next(efl_super(obj, MY_CLASS), dir, next, next_item); + EINA_INLIST_FOREACH(sd->items, it) { if (it->realized) @@ -3623,7 +3629,10 @@ _elm_gengrid_efl_ui_widget_focus_next(Eo *obj, Elm_Gengrid_Data *sd, Elm_Focus_D EOLIAN static Eina_Bool _elm_gengrid_efl_ui_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Gengrid_Data *_pd EINA_UNUSED) { - return EINA_TRUE; + //Fallback Legacy Focus + if (!elm_widget_is_legacy(obj)) + return efl_ui_widget_focus_direction_manager_is(efl_super(obj, MY_CLASS)); + else return EINA_TRUE; } EOLIAN static Eina_Bool @@ -3634,6 +3643,10 @@ _elm_gengrid_efl_ui_widget_focus_direction(Eo *obj, Elm_Gengrid_Data *sd EINA_UN Eina_Bool ret = EINA_FALSE; double c_weight = 0.0; + //Fallback Legacy Focus + if (!elm_widget_is_legacy(obj)) + return efl_ui_widget_focus_direction(efl_super(obj, MY_CLASS), base, degree, direction, direction_item, weight); + items = elm_gengrid_realized_items_get(obj); eo_item = elm_object_focused_item_get(base); if (eo_item) @@ -3939,8 +3952,9 @@ _elm_gengrid_item_elm_widget_item_item_focus_set(Eo *eo_it, Elm_Gen_Item *it, Ei _elm_gengrid_item_unfocused(sd->focused_item); _elm_gengrid_item_focused(eo_it); } - - efl_ui_focus_manager_focus_set(obj, eo_it); + //Fallback Legacy Focus + if (!elm_widget_is_legacy(obj)) + efl_ui_focus_manager_focus_set(obj, eo_it); } else { @@ -4319,6 +4333,9 @@ EOLIAN static void _elm_gengrid_efl_ui_focus_manager_setup_on_first_touch(Eo *obj, Elm_Gengrid_Data *pd, Efl_Ui_Focus_Direction direction, Efl_Ui_Focus_Object *entry EINA_UNUSED) { Elm_Object_Item *eo_it = NULL; + + //Fallback Legacy Focus + if (elm_widget_is_legacy(obj)) return; if (direction == EFL_UI_FOCUS_DIRECTION_LAST && entry == NULL) return; @@ -4380,12 +4397,19 @@ EOLIAN static Eo * _elm_gengrid_efl_object_constructor(Eo *obj, Elm_Gengrid_Data *sd) { sd->content_item_map = eina_hash_pointer_new(NULL); - sd->provider = efl_add(EFL_UI_FOCUS_PARENT_PROVIDER_GEN_CLASS, obj, - efl_ui_focus_parent_provider_gen_container_set(efl_added, obj), - efl_ui_focus_parent_provider_gen_content_item_map_set(efl_added, sd->content_item_map)); - efl_ui_focus_composition_custom_manager_set(obj, obj); - efl_ui_focus_composition_logical_mode_set(obj, EINA_TRUE); + //Fallback Legacy Focus + if (!elm_widget_is_legacy(obj)) + { + sd->provider = efl_add(EFL_UI_FOCUS_PARENT_PROVIDER_GEN_CLASS, obj, + efl_ui_focus_parent_provider_gen_container_set(efl_added, obj), + efl_ui_focus_parent_provider_gen_content_item_map_set(efl_added, sd->content_item_map)); + + efl_ui_focus_composition_custom_manager_set(obj, obj); + efl_ui_focus_composition_logical_mode_set(obj, EINA_TRUE); + + efl_event_callback_add(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _gengrid_element_focused, obj); + } obj = efl_constructor(efl_super(obj, MY_CLASS)); sd->obj = obj; @@ -4394,8 +4418,6 @@ _elm_gengrid_efl_object_constructor(Eo *obj, Elm_Gengrid_Data *sd) evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks); efl_access_role_set(obj, EFL_ACCESS_ROLE_TREE_TABLE); - efl_event_callback_add(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, _gengrid_element_focused, obj); - return obj; } @@ -5842,6 +5864,9 @@ _elm_gengrid_efl_ui_focus_composition_prepare(Eo *obj, Elm_Gengrid_Data *pd) Elm_Gen_Item *item; Eina_List *order = NULL; +//Fallback Legacy Focus +if (elm_widget_is_legacy(obj)) return; + EINA_INLIST_FOREACH(pd->items, item) { if (item->base->disabled) @@ -5856,6 +5881,9 @@ _elm_gengrid_efl_ui_focus_composition_prepare(Eo *obj, Elm_Gengrid_Data *pd) EOLIAN static Eina_Bool _elm_gengrid_efl_ui_widget_focus_state_apply(Eo *obj, Elm_Gengrid_Data *pd EINA_UNUSED, Efl_Ui_Widget_Focus_State current_state, Efl_Ui_Widget_Focus_State *configured_state, Efl_Ui_Widget *redirect EINA_UNUSED) { + //Fallback Legacy Focus + if (elm_widget_is_legacy(obj)) return EINA_FALSE; + return efl_ui_widget_focus_state_apply(efl_super(obj, MY_CLASS), current_state, configured_state, obj); } @@ -5865,6 +5893,9 @@ _elm_gengrid_item_efl_ui_focus_object_prepare_logical_none_recursive(Eo *obj, El Eina_List *n; Efl_Ui_Widget *wid; + //Fallback Legacy Focus + if (elm_widget_is_legacy(obj)) return; + EINA_LIST_FOREACH(pd->contents, n, wid) { if (efl_isa(wid, EFL_UI_WIDGET_CLASS)) diff --git a/src/lib/elementary/elm_gengrid.eo b/src/lib/elementary/elm_gengrid.eo index bb8eb4af55..0f3ca89aa8 100644 --- a/src/lib/elementary/elm_gengrid.eo +++ b/src/lib/elementary/elm_gengrid.eo @@ -511,7 +511,7 @@ class Elm.Gengrid (Efl.Ui.Layout, Efl.Ui.Focus.Composition, Elm.Interface_Scroll Efl.Ui.Widget.on_access_update; Efl.Ui.Widget.focus_next; Efl.Ui.Widget.focus_direction; - Efl.Ui.Widget.on_focus_update; + Efl.Ui.Focus.Object.on_focus_update; Efl.Ui.Widget.interest_region { get; } Efl.Ui.Widget.widget_event; Efl.Ui.Widget.focus_highlight_geometry { get; } |