forked from enlightenment/efl
list: focus highlight is handled by item theme.
Summary: Problem: list theme (elm/list/base/default) is an alias of scroller base theme (elm/scroller/base/default) in which focus_highlight is set to "on". Solution: Now focus highlight in_theme is set by list item theme. Test Plan: elementary_test->"List Focus" Reviewers: seoz, woohyun Reviewed By: seoz CC: nirajkr Differential Revision: https://phab.enlightenment.org/D572
This commit is contained in:
parent
ff3521ba9e
commit
38ac88d9d5
|
@ -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));
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue