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