discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=3e2c16ebfdb5d48ad456433e30daa2e32b76daae

commit 3e2c16ebfdb5d48ad456433e30daa2e32b76daae
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Mon Jun 16 13:20:41 2014 -0400

    update ibar menu theme states dynamically
    
    fix T1300
---
 src/modules/ibar/e_mod_main.c | 39 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index e0c9a2a..bcda3f1 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -1200,14 +1200,49 @@ _ibar_icon_menu_recalc(IBar_Icon *ic)
 }
 
 static void
-_ibar_cb_icon_menu_img_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
+_ibar_cb_icon_menu_focus_change(void *data, Evas_Object *obj, const char *sig 
EINA_UNUSED, const char *src EINA_UNUSED)
+{
+   E_Client *ec;
+
+   ec = e_comp_object_client_get(obj);
+   if (ec->focused)
+     edje_object_signal_emit(data, "e,state,focused", "e");
+   else
+     edje_object_signal_emit(data, "e,state,unfocused", "e");
+}
+
+static void
+_ibar_cb_icon_menu_desk_change(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info)
+{
+   E_Client *ec = event_info;
+   IBar_Icon *ic;
+
+   ic = evas_object_data_get(data, "ibar_icon");
+
+   if (ec->sticky || (ec->zone != ic->ibar->inst->gcc->gadcon->zone))
+     edje_object_signal_emit(data, "e,state,other,screen", "e");
+   else if (!ec->desk->visible)
+     edje_object_signal_emit(data, "e,state,other,desk", "e");
+   else
+     edje_object_signal_emit(data, "e,state,other,none", "e");
+}
+
+static void
+_ibar_cb_icon_menu_img_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, 
void *event_info EINA_UNUSED)
 {
    int w, h;
+   E_Client *ec;
    IBar_Icon *ic = evas_object_data_del(data, "ibar_icon");
 
    if (!ic) return; //menu is closing
    if (!ic->menu) return; //who knows
    edje_object_part_box_remove(ic->menu->o_bg, "e.box", data);
+   ec = evas_object_data_get(obj, "E_Client");
+   if (ec)
+     {
+        e_comp_object_signal_callback_del_full(ec->frame, "e,state,*focused", 
"e", _ibar_cb_icon_menu_focus_change, data);
+        evas_object_smart_callback_del_full(ec->frame, "desk_change", 
_ibar_cb_icon_menu_desk_change, data);
+     }
    evas_object_del(data);
    if (eina_list_count(ic->exes) <= 1)
      {
@@ -1273,6 +1308,8 @@ _ibar_icon_menu_client_add(IBar_Icon *ic, E_Client *ec)
    e_theme_edje_object_set(it, "base/theme/modules/ibar",
                            "e/modules/ibar/menu/item");
    img = e_comp_object_util_mirror_add(ec->frame);
+   e_comp_object_signal_callback_add(ec->frame, "e,state,*focused", "e", 
_ibar_cb_icon_menu_focus_change, it);
+   evas_object_smart_callback_add(ec->frame, "desk_change", 
_ibar_cb_icon_menu_desk_change, it);
    evas_object_event_callback_add(img, EVAS_CALLBACK_DEL,
                                   _ibar_cb_icon_menu_img_del, it);
    txt = e_client_util_name_get(ec);

-- 


Reply via email to