From f30789e923a91f3353e86bad3c33eeae2ed05fb5 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Thu, 15 Oct 2020 15:36:56 +0900 Subject: [PATCH] Fix issue not to send IME focus-out message sometimes Change-Id: I473c1aace31e0c45815ebdc04908013bd8463f73 Signed-off-by: Jihoon Kim --- src/e_mod_main.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/e_mod_main.c b/src/e_mod_main.c index d8962fe..5cdf703 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -1454,8 +1454,9 @@ _e_text_input_method_create_context(struct wl_client *client, E_Input_Method *in wl_input_method_send_activate(input_method->resource, context->resource, text_input->id, need_focus_out); - LOGD("wm_map TEXTINPUT activate : %p %p", input_method->resource, - context->resource); + LOGD("wm_map TEXTINPUT activate : input_method->resource(%p) context->resource(%p)", + input_method->resource, context->resource); + destroyed_resource = NULL; return EINA_TRUE; @@ -2161,23 +2162,27 @@ _e_text_input_cb_destroy(struct wl_client *client, struct wl_resource *resource) return; } - LOGD("text_input(%p), input_method(%p), context(%p), context->resource(%p) resource(%p)", text_input, input_method, input_method->context, (input_method->context ? input_method->context->resource : NULL), resource); + LOGD("text_input(%p), focus(%d), input_method(%p), input_method->resource(%p), context(%p), context->resource(%p), resource(%p)", + text_input, (text_input == g_text_input), input_method, input_method->resource, input_method->context, + (input_method->context ? input_method->context->resource : NULL), resource); if ((!input_method->context) || (!input_method->context->resource)) _context_created = _e_text_input_method_create_context(client, input_method, text_input, EINA_FALSE); - if (text_input == g_text_input && - input_method->resource && input_method->context && input_method->context->resource) + if (text_input == g_text_input) { - wl_input_method_send_destroy(input_method->resource, input_method->context->resource); - LOGD("wm_map TEXTINPUT destroy : %p %p", input_method->resource, - input_method->context->resource); + if (_context_created) + _e_text_input_deactivate(text_input, input_method, EINA_FALSE); - destroyed_resource = input_method->resource; - } + if (input_method->resource && input_method->context && input_method->context->resource) + { + wl_input_method_send_destroy(input_method->resource, input_method->context->resource); + LOGD("wm_map TEXTINPUT destroy : input_method->resource(%p) input_method->context->resource(%p)", + input_method->resource, input_method->context->resource); - if (_context_created) - _e_text_input_deactivate(text_input, input_method, EINA_FALSE); + destroyed_resource = input_method->resource; + } + } } static const struct wl_text_input_interface _e_text_input_implementation = { -- 2.34.1