From 65fcd7fb0c118eb0c334292870971a271dbf664b Mon Sep 17 00:00:00 2001 From: Dhiraj Kr Mishra Date: Tue, 4 Oct 2016 14:17:03 +0530 Subject: [PATCH] "Fix TOPMOST Mode Event Delivery Surface" If window stack changed TOPMOST mode key delivery should be sent to the surface, which has been promoted to the head of top_ptr list. top_ptr list is being updated by _e_keyrouter_check_top_visible_window,however while sending event obselete surface data was used as a result first event was not delivering to correct surface. Change-Id: I10364d6a478ba7d5b75186f289433df8971bea23 Signed-off-by: Dhiraj Kr Mishra --- src/e_mod_keyrouter_events.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/e_mod_keyrouter_events.c b/src/e_mod_keyrouter_events.c index 3447968..93450d1 100644 --- a/src/e_mod_keyrouter_events.c +++ b/src/e_mod_keyrouter_events.c @@ -271,14 +271,15 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev) if (_e_keyrouter_check_top_visible_window(ec_focus, keycode)) { - pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface); + E_Keyrouter_Key_List_NodePtr top_key_node_data = eina_list_data_get(krt->HardKeys[keycode].top_ptr); + pid = e_keyrouter_util_get_pid(top_key_node_data->wc, top_key_node_data->surface); pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid)); - res = _e_keyrouter_send_key_event(type, key_node_data->surface, NULL, ev, key_node_data->focused, + res = _e_keyrouter_send_key_event(type, top_key_node_data->surface, NULL, ev, top_key_node_data->focused, TIZEN_KEYROUTER_MODE_TOPMOST); KLINF("TOPMOST (TOP_POSITION) : %s (%s:%d) => Surface (%p) (pid: %d) (pname: %s)", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, - key_node_data->surface, pid, pname); + top_key_node_data->surface, pid, pname); E_FREE(pname); return res; -- 2.34.1