From: JengHyun Kang Date: Wed, 19 Oct 2016 07:49:30 +0000 (+0900) Subject: Send key cancel events when the client request ungrab after key is pressed X-Git-Tag: submit/tizen/20161103.055300~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0b0fdd5192e762df515f0bdfda7d5e760ec259ca;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-keyrouter.git Send key cancel events when the client request ungrab after key is pressed Change-Id: Ie5cd1d30fa295c25d197833207d0058c3d25da48 --- diff --git a/src/e_mod_main_wl.c b/src/e_mod_main_wl.c index 27a0675..eb6ebd2 100644 --- a/src/e_mod_main_wl.c +++ b/src/e_mod_main_wl.c @@ -168,6 +168,8 @@ static void _e_keyrouter_cb_keygrab_unset(struct wl_client *client, struct wl_resource *resource, struct wl_resource *surface, uint32_t key) { int res = 0; + Eina_List *l = NULL; + E_Keyrouter_Key_List_NodePtr data = NULL; TRACE_INPUT_BEGIN(_e_keyrouter_cb_keygrab_unset); KLINF("Key ungrab request (client: %p, surface: %p, pid: %d, key:%d)", client, surface, e_keyrouter_util_get_pid(client, surface), key); @@ -176,6 +178,20 @@ _e_keyrouter_cb_keygrab_unset(struct wl_client *client, struct wl_resource *reso TRACE_INPUT_END(); tizen_keyrouter_send_keygrab_notify(resource, surface, key, TIZEN_KEYROUTER_MODE_NONE, res); + EINA_LIST_FOREACH(krt->HardKeys[key].press_ptr, l, data) + { + if (surface) + { + if (surface == data->surface) + { + tizen_keyrouter_send_key_cancel(resource, key-8); + } + } + else if (client == data->wc) + { + tizen_keyrouter_send_key_cancel(resource, key-8); + } + } } /* tizen_keyrouter get_keygrab_status request handler */