diff --git a/legacy/elementary/src/lib/elm_gengrid.c b/legacy/elementary/src/lib/elm_gengrid.c index ab7a574552..b91ddc5f29 100644 --- a/legacy/elementary/src/lib/elm_gengrid.c +++ b/legacy/elementary/src/lib/elm_gengrid.c @@ -1487,6 +1487,12 @@ _elm_gengrid_item_focused(Elm_Gen_Item *it) (elm_widget_item_disabled_get(it))) return; + if (!_elm_config->focus_auto_scroll_bring_in_enable) + elm_gengrid_item_show + ((Elm_Object_Item *)it, ELM_GENGRID_ITEM_SCROLLTO_IN); + else + elm_gengrid_item_bring_in + ((Elm_Object_Item *)it, ELM_GENGRID_ITEM_SCROLLTO_IN); sd->focused_item = (Elm_Object_Item *)it; if (elm_widget_focus_highlight_enabled_get(obj)) diff --git a/legacy/elementary/src/lib/elm_genlist.c b/legacy/elementary/src/lib/elm_genlist.c index 0e5caba707..c220d340d2 100644 --- a/legacy/elementary/src/lib/elm_genlist.c +++ b/legacy/elementary/src/lib/elm_genlist.c @@ -2432,6 +2432,12 @@ _elm_genlist_item_focused(Elm_Gen_Item *it) (elm_widget_item_disabled_get(it))) return; + if (!_elm_config->focus_auto_scroll_bring_in_enable) + elm_genlist_item_show((Elm_Object_Item *)it, + ELM_GENLIST_ITEM_SCROLLTO_IN); + else + elm_genlist_item_bring_in((Elm_Object_Item *)it, + ELM_GENLIST_ITEM_SCROLLTO_IN); sd->focused_item = (Elm_Object_Item *)it; if (elm_widget_focus_highlight_enabled_get(obj)) diff --git a/legacy/elementary/src/lib/elm_list.c b/legacy/elementary/src/lib/elm_list.c index 7b0cc06a97..9ebe5a11f3 100644 --- a/legacy/elementary/src/lib/elm_list.c +++ b/legacy/elementary/src/lib/elm_list.c @@ -1084,11 +1084,21 @@ static void _elm_list_item_focused(Elm_List_Item *it) { ELM_LIST_DATA_GET(WIDGET(it), sd); + Evas_Coord x, y, w, h, sx, sy, sw, sh; const char *focus_raise; if ((!sd) || (sd->select_mode == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) || (it == (Elm_List_Item *)sd->focused_item)) return; + evas_object_geometry_get(VIEW(it), &x, &y, &w, &h); + evas_object_geometry_get(sd->hit_rect, &sx, &sy, &sw, &sh); + if ((x < sx) || (y < sy)|| ((x + w) > (sx + sw)) || ((y + h) > (sy + sh))) + { + if (!_elm_config->focus_auto_scroll_bring_in_enable) + elm_list_item_show((Elm_Object_Item *)it); + else + elm_list_item_bring_in((Elm_Object_Item *)it); + } sd->focused_item = (Elm_Object_Item *)it; if (elm_widget_focus_highlight_enabled_get(WIDGET(it))) { diff --git a/legacy/elementary/src/lib/elm_toolbar.c b/legacy/elementary/src/lib/elm_toolbar.c index 32b08f115f..dc3b589354 100644 --- a/legacy/elementary/src/lib/elm_toolbar.c +++ b/legacy/elementary/src/lib/elm_toolbar.c @@ -601,6 +601,12 @@ _elm_toolbar_item_focused(Elm_Toolbar_Item *it) return; sd->focused_item = it; + if (!_elm_config->focus_auto_scroll_bring_in_enable) + elm_toolbar_item_show((Elm_Object_Item *)it, + ELM_TOOLBAR_ITEM_SCROLLTO_IN); + else + elm_toolbar_item_bring_in((Elm_Object_Item *)it, + ELM_TOOLBAR_ITEM_SCROLLTO_IN); if (elm_widget_focus_highlight_enabled_get(obj)) { edje_object_signal_emit