discomfitor pushed a commit to branch master.

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

commit a0b07b9df7fccf17011d74dd156b275031d6ea07
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Sun Jan 5 23:51:47 2014 -0500

    fix ibar mouse in/out animations
    
    previous operation resulted in repeated show/hide signals which looked bad.
    
    going to have to investigate timer settings on this, current behavior, 
while a step in the right direction, seems unusable for me with the mismatch of 
no delay to show, LOOOOOOONG delay to hide
---
 src/modules/ibar/e_mod_main.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index 2223f42..f6dc7ba 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -58,6 +58,7 @@ struct _IBar
    Eina_Inlist  *icons;
    IBar_Order  *io;
    Evas_Coord   dnd_x, dnd_y;
+   IBar_Icon   *menu_icon;
    Eina_Bool    focused : 1;
 };
 
@@ -1152,6 +1153,7 @@ _ibar_icon_menu(IBar_Icon *ic, Eina_Bool grab)
    edje_object_signal_emit(o, "e,state,hidden", "e");
    edje_object_message_signal_process(o);
    e_gadcon_popup_show(ic->menu);
+   ic->ibar->menu_icon = ic;
    {
       Evas_Coord x, y, iw, ih, ox, oy;
       evas_object_geometry_get(ic->o_holder, &x, &y, &iw, &ih);
@@ -1173,16 +1175,15 @@ _ibar_icon_menu(IBar_Icon *ic, Eina_Bool grab)
 static void
 _ibar_icon_menu_show(IBar_Icon *ic, Eina_Bool grab)
 {
-   IBar_Icon *ic2;
-
-   EINA_INLIST_FOREACH(ic->ibar->icons, ic2)
-     {
-        if (ic2 == ic) continue;
-        if (ic2->menu) _ibar_icon_menu_hide(ic2, ic2->menu_grabbed);
-     }
+   if (ic->ibar->menu_icon && (ic->ibar->menu_icon != ic))
+     _ibar_icon_menu_hide(ic->ibar->menu_icon, 
ic->ibar->menu_icon->menu_grabbed);
    if (ic->menu)
      {
-        edje_object_signal_emit(ic->menu->o_bg, "e,action,show", "e");
+        if (ic->ibar->menu_icon != ic)
+          {
+             edje_object_signal_emit(ic->menu->o_bg, "e,action,show", "e");
+             ic->ibar->menu_icon = ic;
+          }
         return;
      }
    ic->drag.start = 0;
@@ -1196,6 +1197,8 @@ _ibar_icon_menu_hide(IBar_Icon *ic, Eina_Bool grab)
 {
    if (!ic->menu) return;
    if (ic->menu_grabbed != grab) return;
+   if (ic->ibar->menu_icon == ic)
+     ic->ibar->menu_icon = NULL;
    E_FREE_FUNC(ic->hide_timer, ecore_timer_del);
    ic->menu_grabbed = EINA_FALSE;
    edje_object_signal_emit(ic->menu->o_bg, "e,action,hide", "e");

-- 


Reply via email to