summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-06-29 10:02:47 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-06-29 10:02:47 -0400
commit033217c8e1841e9e9e5256aacb749650d3393377 (patch)
tree39e5eebac9fa500d95f991a1bb4c9c7205702f62
parent124e59df6f77184fef4da1078de0decaf74ad6b2 (diff)
downloadenlightenment-033217c8e1841e9e9e5256aacb749650d3393377.tar.gz
destroy evry's focus-out timer if focus-in occurs before timer triggers
fixes dismissal during comp input regrabs
-rw-r--r--src/modules/everything/evry.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/modules/everything/evry.c b/src/modules/everything/evry.c
index 063a8513b5..e17898ca60 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;