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 <cedric@osg.samsung.com>
This commit is contained in:
Jeeyong Um 2017-04-19 10:41:08 -07:00 committed by Cedric BAIL
parent 8f9d586080
commit c8ca766a49
2 changed files with 44 additions and 11 deletions

View File

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

View File

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