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

-- 


Reply via email to