summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-03-31 11:11:02 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-03-31 11:21:31 -0400
commit4a73e9f29ac5a3bafdff8d05c2f544ab47d4000b (patch)
treea67065caa5f59e6f5c86847de574f064aee2f785
parent0cb7013cdaeeadef52793508da9a857a9136c615 (diff)
downloadenlightenment-4a73e9f29ac5a3bafdff8d05c2f544ab47d4000b.tar.gz
explicitly manage client focus when setting/unsetting input grabs
clients cannot retain focus during a compositor grab, so ensure that they do not think they have focus in such cases fix T3338
-rw-r--r--src/bin/e_comp.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
index fdb5b507a6..79ffe83390 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -1653,6 +1653,8 @@ e_comp_grab_input(Eina_Bool mouse, Eina_Bool kbd)
if ((e_comp->input_mouse_grabs && e_comp->input_key_grabs) ||
e_grabinput_get(mwin, 0, kwin))
{
+ if (e_client_focused_get())
+ evas_object_focus_set(e_client_focused_get()->frame, 0);
ret = EINA_TRUE;
e_comp->input_mouse_grabs += mouse;
e_comp->input_key_grabs += kbd;
@@ -1680,7 +1682,17 @@ e_comp_ungrab_input(Eina_Bool mouse, Eina_Bool kbd)
e_grabinput_release(mwin, kwin);
evas_event_feed_mouse_out(e_comp->evas, 0, NULL);
evas_event_feed_mouse_in(e_comp->evas, 0, NULL);
- if (e_client_focused_get()) return;
+ if (e_client_focused_get())
+ {
+ E_Client *ec = e_client_focused_get();
+
+ if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
+ {
+ evas_object_focus_set(ec->frame, 0);
+ evas_object_focus_set(ec->frame, 1);
+ }
+ return;
+ }
if (e_config->focus_policy != E_FOCUS_MOUSE)
e_client_refocus();
}