diff --git a/data/elementary/themes/edc/elm/button.edc b/data/elementary/themes/edc/elm/button.edc index 052893110f..a05260f4e3 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 002bf33b6d..e8b673eabe 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"); + } } }