discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=92b65633a49564f9ef2c76be91752e4b2540c50a

commit 92b65633a49564f9ef2c76be91752e4b2540c50a
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Fri Jan 17 18:13:03 2014 -0500

    hide mouseover ibar menu after mouse has left
    
    T744
---
 src/modules/ibar/e_mod_main.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index 472a439..c68cea0 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -131,6 +131,7 @@ static void         _ibar_drop_position_update(Instance 
*inst, Evas_Coord x, Eva
 static void         _ibar_inst_cb_scroll(void *data);
 static Eina_Bool    _ibar_cb_config_icons(void *data, int ev_type, void *ev);
 
+static Eina_Bool    _ibar_cb_out_hide_delay(void *data);
 static void         _ibar_icon_menu_show(IBar_Icon *ic, Eina_Bool grab);
 static void         _ibar_icon_menu_hide(IBar_Icon *ic, Eina_Bool grab);
 
@@ -1103,6 +1104,25 @@ _ibar_cb_icon_menu_img_del(void *data, Evas *e 
EINA_UNUSED, Evas_Object *obj EIN
 }
 
 static void
+_ibar_icon_menu_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   IBar_Icon *ic = data;
+
+   E_FREE_FUNC(ic->hide_timer, ecore_timer_del);
+}
+
+static void
+_ibar_icon_menu_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   IBar_Icon *ic = data;
+
+   if (ic->hide_timer)
+     ecore_timer_reset(ic->hide_timer);
+   else
+     ic->hide_timer = ecore_timer_add(1.0, _ibar_cb_out_hide_delay, ic);
+}
+
+static void
 _ibar_icon_menu(IBar_Icon *ic, Eina_Bool grab)
 {
    Evas_Object *o, *it;
@@ -1175,6 +1195,12 @@ _ibar_icon_menu(IBar_Icon *ic, Eina_Bool grab)
    edje_object_size_min_calc(o, &w, &h);
    edje_extern_object_min_size_set(o, w, h);
 
+   if (!grab)
+     {
+        evas_object_event_callback_add(ic->menu->comp_object, 
EVAS_CALLBACK_MOUSE_IN, _ibar_icon_menu_mouse_in, ic);
+        evas_object_event_callback_add(ic->menu->comp_object, 
EVAS_CALLBACK_MOUSE_OUT, _ibar_icon_menu_mouse_out, ic);
+     }
+
    ic->menu->w = w, ic->menu->h = h;
    edje_object_signal_callback_add(o, "e,action,hide,done", "*",
                                    _ibar_cb_icon_menu_hidden, ic);

-- 


Reply via email to