discomfitor pushed a commit to branch enlightenment-0.21. http://git.enlightenment.org/core/enlightenment.git/commit/?id=dc3e88238352942069870f8b3d0ff58f8d7a6522
commit dc3e88238352942069870f8b3d0ff58f8d7a6522 Author: Mike Blumenkrantz <[email protected]> Date: Fri Mar 3 11:56:16 2017 -0500 defer menu activation mouse-up feed ensure that this is not triggered from an evas post event callback ref T3144 --- src/bin/e_menu.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index cf686ca..4792067 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -103,6 +103,9 @@ static int _e_menu_autoscroll_y = 0; static Eina_List *handlers = NULL; static Eina_Bool _e_menu_lock = EINA_FALSE; +static Eina_Bool pending_feed; +static unsigned int pending_activate_time; + static Eina_List * _e_active_menus_copy_ref(void) { @@ -346,7 +349,8 @@ e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int d } pmi = _e_menu_item_active_get(); if (pmi) e_menu_item_active_set(pmi, 0); - e_comp_canvas_feed_mouse_up(activate_time); + pending_feed = 1; + pending_activate_time = activate_time; } E_API void @@ -1087,6 +1091,12 @@ e_menu_idler_before(void) Eina_List *l, *removals = NULL, *tmp; E_Menu *m; + if (pending_feed) + { + e_comp_canvas_feed_mouse_up(pending_activate_time); + pending_feed = 0; + } + /* add refcount to all menus we will work with */ tmp = _e_active_menus_copy_ref(); /* phase 1. hide all the menus that want to be hidden */ --
