Modified to use new protocols related to focus events 57/266757/2
authorInHong Han <inhong1.han@samsung.com>
Thu, 18 Nov 2021 08:22:31 +0000 (17:22 +0900)
committerInHong Han <inhong1.han@samsung.com>
Mon, 22 Nov 2021 02:36:16 +0000 (11:36 +0900)
Change-Id: I21d82d467911e9bb1205f1a4a98e42d4a0f483a0

src/e_mod_main.c

index d12c24e81c07136bcfc36659562aba0fc56ef038..cf47b28ab11e9d841964560dfe8766d9068c8a86 100644 (file)
@@ -164,8 +164,8 @@ const int WILL_HIDE_TIMER_INTERVAL = 1.0f;
   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 *
@@ -1237,7 +1237,7 @@ _e_mod_ecore_key_down_cb(void *data, int type, void *event)
 }
 
 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)
      {
@@ -1261,9 +1261,11 @@ _e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method,
              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);
                }
@@ -1363,7 +1365,8 @@ _e_text_input_cb_activate(struct wl_client *client, struct wl_resource *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);
 
@@ -1432,7 +1435,7 @@ _e_text_input_cb_deactivate(struct wl_client *client EINA_UNUSED, struct wl_reso
 }
 
 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;
 
@@ -1465,7 +1468,11 @@ _e_text_input_method_create_context(struct wl_client *client, E_Input_Method *in
    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);