derekf pushed a commit to branch master.

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

commit 963afc8fea13aa5f24eaf2ce678a0e2c6e5939de
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Fri Jul 8 16:12:43 2016 -0500

    Properly send kbd focus to xdg_shell popups
    
    Oops, a client can have multiple top level windows.
    
    ref f391a0fb6724d9efe9aa0c89fe47e2372af8d35d
---
 src/bin/e_comp_wl.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index f9e872a..7eb6b04 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -627,14 +627,16 @@ _e_comp_wl_evas_cb_focus_in(void *data, Evas *evas 
EINA_UNUSED, Evas_Object *obj
    wc = wl_resource_get_client(ec->comp_data->surface);
    if (ec->comp_data->is_xdg_surface)
      {
-        /* If an xdg shell popup's parent already has focus we don't
-         * need to do anything more.
-         */
-        EINA_LIST_FOREACH(e_comp_wl->kbd.focused, l, res)
-          if (wl_resource_get_client(res) == wc) return;
+        /* We only send kbd focus to xdg top levels */
+        while (ec->parent)
+          {
+             ec = ec->parent;
 
-        /* We only kbd focus top level xdg */
-        while (ec->parent) ec = ec->parent;
+             /* If an xdg shell popup's parent already has focus we don't
+              * need to do anything more.
+              */
+             if (ec->focused) return;
+          }
      }
 
    EINA_LIST_FOREACH(e_comp_wl->kbd.resources, l, res)

-- 


Reply via email to