From: Jihoon Kim Date: Mon, 27 Jun 2022 04:25:40 +0000 (+0900) Subject: Reduce duplicate code to create input method context X-Git-Tag: submit/tizen/20220628.013934~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9193457d24e59b0d6d4fc1c42d4eddf2f52e58d1;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-wl-textinput.git Reduce duplicate code to create input method context Change-Id: I6215a02c8b2637e7361663f826c6dc0bfbdbe736 Signed-off-by: Jihoon Kim --- diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 724602d..5c6f128 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -1121,6 +1121,32 @@ _e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method, } } +static E_Input_Method_Context *create_input_method_context(struct wl_client *client, E_Input_Method *input_method) +{ + E_Input_Method_Context *context = NULL; + + if (!(context = E_NEW(E_Input_Method_Context, 1))) + { + wl_client_post_no_memory(client); + ERR("Could not allocate space for Input_Method_Context"); + return NULL; + } + + context->resource = + wl_resource_create(wl_resource_get_client(input_method->resource), + &zwp_input_method_context_v1_interface, 1, 0); + + if (context->resource) + wl_resource_set_implementation(context->resource, + &_e_text_input_method_context_implementation, + context, _e_text_input_method_context_cb_resource_destroy); + + context->input_method = input_method; + input_method->context = context; + + return context; +} + static void _e_text_input_cb_activate(struct wl_client *client, struct wl_resource *resource, struct wl_resource *seat, struct wl_resource *surface) { @@ -1165,30 +1191,15 @@ _e_text_input_cb_activate(struct wl_client *client, struct wl_resource *resource if (input_method->resource) { - if (!(context = E_NEW(E_Input_Method_Context, 1))) - { - wl_client_post_no_memory(client); - ERR("Could not allocate space for Input_Method_Context"); - return; - } - if (!ecore_key_down_handler) ecore_key_down_handler = ecore_event_handler_prepend(ECORE_EVENT_KEY_DOWN, _e_mod_ecore_key_down_cb, NULL); - context->resource = - wl_resource_create(wl_resource_get_client(input_method->resource), - &zwp_input_method_context_v1_interface, 1, 0); - - if (context->resource) - wl_resource_set_implementation(context->resource, - &_e_text_input_method_context_implementation, - context, _e_text_input_method_context_cb_resource_destroy); + context = create_input_method_context(client, input_method); + EINA_SAFETY_ON_NULL_GOTO(context, err); context->input = text_input; - context->input_method = input_method; - input_method->context = context; if (context->resource) { @@ -1269,25 +1280,10 @@ _e_text_input_method_create_context(struct wl_client *client, E_Input_Method *in input_method->input = text_input; text_input->input_methods = eina_list_append(text_input->input_methods, input_method); - if (!(context = E_NEW(E_Input_Method_Context, 1))) - { - wl_client_post_no_memory(client); - ERR("Could not allocate space for Input_Method_Context"); - return EINA_FALSE; - } - - context->resource = - wl_resource_create(wl_resource_get_client(input_method->resource), - &zwp_input_method_context_v1_interface, 1, 0); - - if (context->resource) - wl_resource_set_implementation(context->resource, - &_e_text_input_method_context_implementation, - context, _e_text_input_method_context_cb_resource_destroy); + context = create_input_method_context(client, input_method); + EINA_SAFETY_ON_NULL_RETURN_VAL(context, EINA_FALSE); context->input = text_input; - context->input_method = input_method; - input_method->context = context; if (need_focus_in) zwp_input_method_v1_send_activate(input_method->resource, context->resource);