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) --