cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c8ca766a49de425d42e93a30d1c432e9ee9f90cd
commit c8ca766a49de425d42e93a30d1c432e9ee9f90cd Author: Jeeyong Um <con...@gmail.com> Date: Wed Apr 19 10:41:08 2017 -0700 elm.hoversel: highlight selected item when auto update is enabled Summary: When auto update is enabled, the label of the hoversel will be that of selected item. This feature is usually used when changing state of something. Highlighting item previous selected will show what is current state more explicitly especailly hoversel has many items. Test Plan: elementary_test -to hoversel Reviewers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4799 Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- data/elementary/themes/edc/elm/button.edc | 44 +++++++++++++++++++++++-------- src/lib/elementary/elc_hoversel.c | 11 ++++++++ 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/data/elementary/themes/edc/elm/button.edc b/data/elementary/themes/edc/elm/button.edc index 0528931..a05260f 100644 --- a/data/elementary/themes/edc/elm/button.edc +++ b/data/elementary/themes/edc/elm/button.edc @@ -1032,6 +1032,7 @@ group { name: "elm/button/base/hoversel_vertical_entry/default"; #define DISABLE 4 script { public btmode; + public is_selected; public eval_mode(m) { new m1 = m & MASK; new d = m & DISABLE; @@ -1345,12 +1346,14 @@ group { name: "elm/button/base/hoversel_vertical_entry/default"; after: "button_unclick_anim"; } program { name: "button_unclick_anim"; - action: STATE_SET "default" 0.0; - target: "shadow"; - target: "base"; - target: "shine"; - target: "click_clip"; - target: "label3"; + script { + set_state(PART:"shadow", "default", 0.0); + set_state(PART:"base", "default", 0.0); + set_state(PART:"shine", "default", 0.0); + set_state(PART:"click_clip", "default", 0.0); + if (!get_int(is_selected)) + set_state(PART:"label3", "default", 0.0); + } } program { name: "buttonactivate"; signal: "elm,anim,activate"; source: "elm"; @@ -1365,11 +1368,14 @@ group { name: "elm/button/base/hoversel_vertical_entry/default"; program { name: "button_unpressed_anim"; action: STATE_SET "default" 0.0; in: 0.5 0.0; - target: "shadow"; - target: "base"; - target: "shine"; - target: "click_clip"; - target: "label3"; + script { + set_state(PART:"shadow", "default", 0.0); + set_state(PART:"base", "default", 0.0); + set_state(PART:"shine", "default", 0.0); + set_state(PART:"click_clip", "default", 0.0); + if (!get_int(is_selected)) + set_state(PART:"label3", "default", 0.0); + } } program { signal: "mouse,clicked,1"; source: "event"; @@ -1424,6 +1430,22 @@ group { name: "elm/button/base/hoversel_vertical_entry/default"; eval_mode(m); } } + program { "selected"; + signal: "elm,state,selected"; + source: "elm"; + script { + set_int(is_selected, 1); + set_state(PART:"label3", "clicked", 0.0); + } + } + program { "unselected"; + signal: "elm,state,unselected"; + source: "elm"; + script { + set_int(is_selected, 0); + set_state(PART:"label3", "default", 0.0); + } + } } #undef ICON #undef LABEL diff --git a/src/lib/elementary/elc_hoversel.c b/src/lib/elementary/elc_hoversel.c index 002bf33..e8b673e 100644 --- a/src/lib/elementary/elc_hoversel.c +++ b/src/lib/elementary/elc_hoversel.c @@ -151,6 +151,17 @@ _auto_update(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void if(item->label) elm_object_text_set(obj2, item->label); + + Eina_List *l; + Elm_Object_Item *eo_item; + + EINA_LIST_FOREACH(sd->items, l, eo_item) + { + if (eo_item == EO_OBJ(item)) + elm_wdg_item_signal_emit(eo_item, "elm,state,selected", "elm"); + else + elm_wdg_item_signal_emit(eo_item, "elm,state,unselected", "elm"); + } } } --