force mouse up feed on menu ungrab to ensure it gets received

issue described in T89
This commit is contained in:
Mike Blumenkrantz 2013-05-08 13:26:25 +01:00
parent b5e79146a3
commit 506cb8046d
1 changed files with 15 additions and 13 deletions

View File

@ -110,6 +110,19 @@ static Ecore_Event_Handler *_e_menu_mouse_wheel_handler = NULL;
static Eina_Bool _e_menu_lock = EINA_FALSE;
static Evas_Object *_e_menu_event_rect = NULL;
static void
_mouse_up_feed(Evas *e, Ecore_X_Time activate_time)
{
int button_mask, i;
button_mask = evas_pointer_button_down_mask_get(e);
for (i = 0; i < 32; i++)
{
if ((button_mask & (1 << i)))
evas_event_feed_mouse_up(e, i + 1, EVAS_BUTTON_NONE, activate_time, NULL);
}
}
static Eina_List *
_e_active_menus_copy_ref(void)
{
@ -381,19 +394,7 @@ 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);
{
int button_mask, i;
Evas *e;
e = e_comp_get(m)->evas;
button_mask = evas_pointer_button_down_mask_get(e);
for (i = 0; i < 32; i++)
{
if ((button_mask & (1 << i)))
evas_event_feed_mouse_up(e, i + 1, EVAS_BUTTON_NONE, activate_time, NULL);
}
}
_mouse_up_feed(e_comp_get(m)->evas, activate_time);
}
EAPI void
@ -1245,6 +1246,7 @@ e_menu_idler_before(void)
{
e_grabinput_release(0, _e_menu_win);
_e_menu_win = 0;
_mouse_up_feed(evas_object_evas_get(_e_menu_event_rect), 0);
E_FREE_FUNC(_e_menu_event_rect, evas_object_del);
}
}