discomfitor pushed a commit to branch master.

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

commit ca5176e6fa13c22d29629a1d9fc2b788b928643a
Author: Mike Blumenkrantz <[email protected]>
Date:   Wed Nov 30 12:46:54 2016 -0500

    handle input detection for wl surface grabs more accurately using stacking
    
    this should more accurately handle cases where mouse movements over grabbed
    surfaces are intercepted by overlapping windows
---
 src/bin/e_comp_wl.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 801e83b..4fc66f6 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -3434,11 +3434,19 @@ e_comp_wl_client_is_grabbed(const E_Client *ec)
 static Eina_Bool
 _check_grab_coords(E_Client *ec, int x, int y)
 {
-   if (e_comp_object_coords_inside_input_area(ec->frame, x, y)) return 
EINA_TRUE;
-   while (ec->parent)
+   E_Client *tec, *pec;
+
+   E_CLIENT_REVERSE_FOREACH(tec)
      {
-        ec = ec->parent;
-        if (e_comp_object_coords_inside_input_area(ec->frame, x, y)) return 
EINA_TRUE;
+        if (!e_comp_object_coords_inside_input_area(tec->frame, x, y)) 
continue;
+        if (tec == ec) return EINA_TRUE;
+        pec = ec->parent;
+        while (pec)
+          {
+             if (tec == pec) return EINA_TRUE;
+             pec = pec->parent;
+          }
+        return EINA_FALSE;
      }
    return EINA_FALSE;
 }

-- 


Reply via email to