discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=4b2e75176b6e756cbe078f9396b97095230a476b
commit 4b2e75176b6e756cbe078f9396b97095230a476b Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Thu Jan 14 15:05:33 2016 -0500 improve menu hiding and autoclose remove menu object from autoclose (if set) and ensure that only the intended menu is deactivated in the autoclose callback this fixes some cases where the wrong menu could be closed (or not closed) due to race conditions with ecore and evas events --- src/bin/e_menu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index 6410b0e..7a1dbde 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -189,6 +189,8 @@ e_menu_hide_all(void) if (m->post_deactivate_cb.func) m->post_deactivate_cb.func(m->post_deactivate_cb.data, m); m->active = 0; + if (m->comp_object == e_comp->autoclose.obj) + e_comp_object_util_autoclose(NULL, NULL, NULL, NULL); _e_menu_unrealize(m); m->in_active_list = 0; e_object_unref(E_OBJECT(m)); @@ -2699,9 +2701,13 @@ _e_menu_cb_key_down(void *data EINA_UNUSED, Ecore_Event_Key *ev) */ static void -_e_menu_cb_mouse_evas_down(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED) +_e_menu_cb_mouse_evas_down(void *data, Evas_Object *obj EINA_UNUSED) { - _e_menu_deactivate_all(); + E_Menu *m = data; + + while (m->parent_item) + m = m->parent_item->menu; + e_menu_deactivate(m); } static Eina_Bool --