discomfitor pushed a commit to branch enlightenment-0.21.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=4edf4476dfdbc8b47e503dd9ca405bc82c3a2a08

commit 4edf4476dfdbc8b47e503dd9ca405bc82c3a2a08
Author: Derek Foreman <[email protected]>
Date:   Wed Jul 13 16:03:55 2016 -0500

    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.
---
 src/bin/e_comp_wl.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 8a3d13f..c5ddf32 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;

-- 


Reply via email to