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);
|
_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);
|
elm_layout_sizing_eval(obj);
|
||||||
|
|
||||||
if (ret) *ret = EINA_TRUE;
|
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);
|
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);
|
sd->items = eina_list_append(sd->items, it);
|
||||||
it->node = eina_list_last(sd->items);
|
it->node = eina_list_last(sd->items);
|
||||||
elm_box_pack_end(sd->box, VIEW(it));
|
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);
|
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
|
void
|
||||||
_elm_widget_focus_highlight_start(const Evas_Object *obj)
|
_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 void elm_widget_item_untrack(Elm_Widget_Item *item);
|
||||||
EAPI int elm_widget_item_track_get(const 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);
|
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.
|
* 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 multi : 1;
|
||||||
Eina_Bool swipe : 1;
|
Eina_Bool swipe : 1;
|
||||||
Eina_Bool delete_me : 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;
|
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;
|
if (!elm_win_focus_highlight_enabled_get(obj)) return;
|
||||||
sd->focus_highlight.cur.visible = EINA_TRUE;
|
sd->focus_highlight.cur.visible = EINA_TRUE;
|
||||||
sd->focus_highlight.cur.in_theme = EINA_FALSE;
|
|
||||||
sd->focus_highlight.geometry_changed = EINA_TRUE;
|
sd->focus_highlight.geometry_changed = EINA_TRUE;
|
||||||
_elm_win_focus_highlight_reconfigure(sd);
|
_elm_win_focus_highlight_reconfigure(sd);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue