diff --git a/legacy/elementary/src/lib/elm_list.c b/legacy/elementary/src/lib/elm_list.c index 7efa425f4f..f81f643dd3 100644 --- a/legacy/elementary/src/lib/elm_list.c +++ b/legacy/elementary/src/lib/elm_list.c @@ -980,6 +980,11 @@ _elm_list_smart_theme(Eo *obj, void *_pd, va_list *list) } _items_fix(obj); + + //focus highlight in_theme is set by list item theme. + _elm_widget_item_highlight_in_theme( + obj, elm_list_first_item_get(obj)); + elm_layout_sizing_eval(obj); if (ret) *ret = EINA_TRUE; @@ -2523,6 +2528,12 @@ _item_append(Eo *obj, void *_pd, va_list *list) it = _item_new(obj, label, icon, end, func, data); + if (!sd->in_theme_checked) + { + _elm_widget_item_highlight_in_theme(obj, (Elm_Object_Item *)it); + sd->in_theme_checked = EINA_TRUE; + } + sd->items = eina_list_append(sd->items, it); it->node = eina_list_last(sd->items); elm_box_pack_end(sd->box, VIEW(it)); diff --git a/legacy/elementary/src/lib/elm_widget.c b/legacy/elementary/src/lib/elm_widget.c index 464352a678..20ce48f10e 100644 --- a/legacy/elementary/src/lib/elm_widget.c +++ b/legacy/elementary/src/lib/elm_widget.c @@ -83,6 +83,19 @@ _elm_scrollable_is(const Evas_Object *obj) eo_isa(obj, ELM_SCROLLABLE_INTERFACE); } +void +_elm_widget_item_highlight_in_theme(Evas_Object *obj, Elm_Object_Item *it) +{ + const char *str; + + if (!it) return; + str = edje_object_data_get(VIEW(it), "focus_highlight"); + if ((str) && (!strcmp(str, "on"))) + elm_widget_highlight_in_theme_set(obj, EINA_TRUE); + else + elm_widget_highlight_in_theme_set(obj, EINA_FALSE); +} + void _elm_widget_focus_highlight_start(const Evas_Object *obj) { diff --git a/legacy/elementary/src/lib/elm_widget.h b/legacy/elementary/src/lib/elm_widget.h index a127dd5003..1377179904 100644 --- a/legacy/elementary/src/lib/elm_widget.h +++ b/legacy/elementary/src/lib/elm_widget.h @@ -810,6 +810,7 @@ EAPI Evas_Object *elm_widget_item_track(Elm_Widget_Item *item); EAPI void elm_widget_item_untrack(Elm_Widget_Item *item); EAPI int elm_widget_item_track_get(const Elm_Widget_Item *item); EAPI void _elm_widget_item_track_cancel(Elm_Widget_Item *item); +void _elm_widget_item_highlight_in_theme(Evas_Object *obj, Elm_Object_Item *it); /** * Function to operate on a given widget's scrollabe children when necessary. diff --git a/legacy/elementary/src/lib/elm_widget_list.h b/legacy/elementary/src/lib/elm_widget_list.h index 06562da29e..ccef1877fe 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; + Eina_Bool in_theme_checked : 1; /**< flag for setting item highlight in theme. */ }; typedef struct _Elm_List_Item Elm_List_Item; diff --git a/legacy/elementary/src/lib/elm_win.c b/legacy/elementary/src/lib/elm_win.c index 53a707b094..16ecab1ef5 100644 --- a/legacy/elementary/src/lib/elm_win.c +++ b/legacy/elementary/src/lib/elm_win.c @@ -5830,7 +5830,6 @@ _elm_win_focus_highlight_start(Evas_Object *obj) if (!elm_win_focus_highlight_enabled_get(obj)) return; sd->focus_highlight.cur.visible = EINA_TRUE; - sd->focus_highlight.cur.in_theme = EINA_FALSE; sd->focus_highlight.geometry_changed = EINA_TRUE; _elm_win_focus_highlight_reconfigure(sd); }