summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2016-07-13 16:03:55 -0500
committerDerek Foreman <derekf@osg.samsung.com>2016-07-13 16:03:55 -0500
commit248fa6d1e6d2c767dd148ae58d21a448d2162c7d (patch)
tree4ee76c24abcad28d561662665417e47caaafdbf4
parente32db0e7e3aba07c9a7a04c5634f3e1d1a6e94cd (diff)
downloadenlightenment-248fa6d1e6d2c767dd148ae58d21a448d2162c7d.tar.gz
Fix xdg_shell focus logic
Moves and resizes tripped up the new xdg focus logic, so test if the focus is leaving the client entirely before trying to determine if it's leaving into a parent surface.
-rw-r--r--src/bin/e_comp_wl.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 8a3d13fc45..c5ddf32926 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -681,8 +681,11 @@ _e_comp_wl_keyboard_leave(E_Client *ec)
if (ec->comp_data->is_xdg_surface)
{
/* If we left an xdg popup to enter some other (sub)surface
- * of the same top level, we don't need to do anything */
- if (_parent_client_contains_pointer(ec)) return;
+ * of the same top level, we don't need to do anything.
+ * We also test e_client_focused_get() because it will be NULL
+ * on moves which trip up _parent_client_contains_pointer() */
+ if (e_client_focused_get() &&
+ _parent_client_contains_pointer(ec)) return;
/* We only kbd focus top level xdg */
while (ec->parent) ec = ec->parent;