From: Derek Foreman Date: Fri, 6 Mar 2015 18:08:24 +0000 (-0500) Subject: Fix stuck modifiers on client exit X-Git-Tag: upstream/0.20.0~1196 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6e4214c8adaa2ae7bc0a864295d42c068ca6a59c;p=platform%2Fupstream%2Fenlightenment.git Fix stuck modifiers on client exit Summary: We still need to remove the active keys when focus_out happens, even if the pixmap is already gone. If we don't and a modifier was held down during exit then the xkb state will have that modifier stuck forever. Reviewers: zmike, devilhorns Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D2110 --- diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index ad3a2ee..05f4e14 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -467,11 +467,6 @@ _e_comp_wl_evas_cb_focus_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob Eina_List *l; if (!(ec = data)) return; - if (e_object_is_del(E_OBJECT(ec))) return; - if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return; - - /* lower client priority */ - _e_comp_wl_client_priority_normal(ec); cdata = ec->comp->wl_comp_data; @@ -479,6 +474,12 @@ _e_comp_wl_evas_cb_focus_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob wl_array_for_each(k, &cdata->kbd.keys) e_comp_wl_input_keyboard_state_update(cdata, *k, EINA_FALSE); + if (e_object_is_del(E_OBJECT(ec))) return; + if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) return; + + /* lower client priority */ + _e_comp_wl_client_priority_normal(ec); + if (!ec->comp_data->surface) return; /* send keyboard_leave to all keyboard resources */