discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b0cb4b38d6aee2130387a12212dfebaaf640e56d
commit b0cb4b38d6aee2130387a12212dfebaaf640e56d Author: Mike Blumenkrantz <[email protected]> Date: Fri Feb 24 14:15:42 2017 -0500 redo wl client setting of E_Client->take_focus and E_Client->want_focus this used to be set on show since the assumption was that show was the first time the client would be seen, but this turns out to be incorrect and results in focus being set too early (breaking policy) --- src/bin/e_comp_wl.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index bac8488..ce361fe 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -182,13 +182,6 @@ _e_comp_wl_evas_cb_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EIN if (e_object_is_del(E_OBJECT(ec))) return; if (!ec->override) e_hints_window_visible_set(ec); - - if (ec->ignored || ec->comp_data->cursor) return; - if (ec->parent && (!ec->parent->focused)) return; - if (ec->new_client) - ec->take_focus = !starting; - else - evas_object_focus_set(ec->frame, !starting); } static void @@ -1332,7 +1325,14 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state) } if (state->new_attach) - _e_comp_wl_surface_state_attach(ec, state); + { + _e_comp_wl_surface_state_attach(ec, state); + if (first && (!ec->comp_data->cursor)) + { + ec->take_focus = !starting || ec->internal_elm_win; + ec->want_focus = ec->override; + } + } _e_comp_wl_surface_state_buffer_set(state, NULL); --
