}
}
+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)
{
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)
{
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);