diff --git a/legacy/elementary/src/lib/elm_list.c b/legacy/elementary/src/lib/elm_list.c index 9d703d4e84..478125a9a9 100644 --- a/legacy/elementary/src/lib/elm_list.c +++ b/legacy/elementary/src/lib/elm_list.c @@ -1062,12 +1062,15 @@ _elm_list_smart_on_focus(Eo *obj, void *_pd, va_list *list) if (elm_widget_focus_get(obj)) { - if (sd->last_focused_item) - _elm_list_item_focused((Elm_List_Item *)sd->last_focused_item); - else if (sd->last_selected_item) - _elm_list_item_focused((Elm_List_Item *)sd->last_selected_item); - else - _elm_list_item_focused((Elm_List_Item *)eina_list_data_get(sd->items)); + if (!sd->highlighted_item) + { + if (sd->last_focused_item) + _elm_list_item_focused((Elm_List_Item *)sd->last_focused_item); + else if (sd->last_selected_item) + _elm_list_item_focused((Elm_List_Item *)sd->last_selected_item); + else + _elm_list_item_focused((Elm_List_Item *)eina_list_data_get(sd->items)); + } _elm_widget_focus_highlight_start(obj); } else @@ -1144,7 +1147,7 @@ _item_highlight(Elm_List_Item *it) if ((select_raise) && (!strcmp(select_raise, "on"))) evas_object_raise(VIEW(it)); it->highlighted = EINA_TRUE; - + sd->highlighted_item = it; _elm_list_unwalk(obj, sd); evas_object_unref(obj); } @@ -1211,6 +1214,7 @@ _item_unhighlight(Elm_List_Item *it) } it->highlighted = EINA_FALSE; + sd->highlighted_item = NULL; _elm_list_unwalk(obj, sd); evas_object_unref(obj); } diff --git a/legacy/elementary/src/lib/elm_widget_list.h b/legacy/elementary/src/lib/elm_widget_list.h index 06562da29e..fcca175ade 100644 --- a/legacy/elementary/src/lib/elm_widget_list.h +++ b/legacy/elementary/src/lib/elm_widget_list.h @@ -53,6 +53,7 @@ struct _Elm_List_Smart_Data Eina_Bool multi : 1; Eina_Bool swipe : 1; Eina_Bool delete_me : 1; + Elm_Object_Item *highlighted_item; }; typedef struct _Elm_List_Item Elm_List_Item;