while (0)
static void _e_text_input_cb_input_panel_show(struct wl_client *client, struct wl_resource *resource);
-static void _e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method, Eina_Bool need_focus_in);
-static Eina_Bool _e_text_input_method_create_context(struct wl_client *client, E_Input_Method *input_method, E_Text_Input *text_input, Eina_Bool need_focus_out);
+static void _e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method, Eina_Bool need_focus_out);
+static Eina_Bool _e_text_input_method_create_context(struct wl_client *client, E_Input_Method *input_method, E_Text_Input *text_input, Eina_Bool need_focus_in);
static void send_hide_input_panel(E_Input_Method *input_method);
E_Client *
}
static void
-_e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method, Eina_Bool need_focus_in)
+_e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method, Eina_Bool need_focus_out)
{
if (text_input == g_text_input)
{
else
{
/* TODO: finish the grab of keyboard. */
- zwp_input_method_v1_send_deactivate(input_method->resource,
- input_method->context->resource,
- need_focus_in);
+ if (need_focus_out)
+ zwp_input_method_v1_send_deactivate(input_method->resource, input_method->context->resource);
+ else
+ zwp_input_method_v1_send_close_connection(input_method->resource, input_method->context->resource);
+
LOGI("wm_map TEXTINPUT deactivate : %p %p", input_method->resource,
input_method->context->resource);
}
if (context->resource)
{
- zwp_input_method_v1_send_activate(input_method->resource, context->resource, text_input->id, EINA_TRUE);
+ zwp_input_method_v1_send_activate(input_method->resource, context->resource);
+ zwp_input_method_v1_send_set_text_input_id(input_method->resource, context->resource, text_input->id);
LOGI("wm_map TEXTINPUT activate : %p %p", input_method->resource,
context->resource);
}
static Eina_Bool
-_e_text_input_method_create_context(struct wl_client *client, E_Input_Method *input_method, E_Text_Input *text_input, Eina_Bool need_focus_out)
+_e_text_input_method_create_context(struct wl_client *client, E_Input_Method *input_method, E_Text_Input *text_input, Eina_Bool need_focus_in)
{
E_Input_Method_Context *context = NULL;
context->input_method = input_method;
input_method->context = context;
- zwp_input_method_v1_send_activate(input_method->resource, context->resource, text_input->id, need_focus_out);
+ if (need_focus_in)
+ zwp_input_method_v1_send_activate(input_method->resource, context->resource);
+ else
+ zwp_input_method_v1_send_open_connection(input_method->resource, context->resource);
+ zwp_input_method_v1_send_set_text_input_id(input_method->resource, context->resource, text_input->id);
LOGI("wm_map TEXTINPUT activate : input_method->resource(%p) context->resource(%p)",
input_method->resource, context->resource);