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:
Amitesh Singh 2014-02-22 04:09:46 +09:00 committed by Daniel Juyung Seo
parent ff3521ba9e
commit 38ac88d9d5
5 changed files with 26 additions and 1 deletions

View File

@ -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));

View File

@ -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)
{

View File

@ -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.

View File

@ -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;

View File

@ -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);
}