From 033217c8e1841e9e9e5256aacb749650d3393377 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 29 Jun 2016 10:02:47 -0400 Subject: [PATCH] destroy evry's focus-out timer if focus-in occurs before timer triggers fixes dismissal during comp input regrabs --- src/modules/everything/evry.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/modules/everything/evry.c b/src/modules/everything/evry.c index 063a8513b..e17898ca6 100644 --- a/src/modules/everything/evry.c +++ b/src/modules/everything/evry.c @@ -180,6 +180,16 @@ _evry_focus_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, v win->delay_hide_action = ecore_timer_add(0.0, _evry_focus_out_timer, win); } +static void +_evry_focus_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evry_Window *win = data; + + if (!win->grab) return; + + E_FREE_FUNC(win->delay_hide_action, ecore_timer_del); +} + Evry_Window * evry_show(E_Zone *zone, E_Zone_Edge edge, const char *params, Eina_Bool popup) { @@ -224,6 +234,7 @@ evry_show(E_Zone *zone, E_Zone_Edge edge, const char *params, Eina_Bool popup) ec->netwm.state.skip_taskbar = 1; EC_CHANGED(ec); evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_FOCUS_OUT, _evry_focus_out, win); + evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_FOCUS_IN, _evry_focus_in, win); } win->grab = 1;