Support Fullscreen IME 50/317950/1
authorInhong Han <inhong1.han@samsung.com>
Thu, 9 Jan 2025 01:10:07 +0000 (10:10 +0900)
committerInhong Han <inhong1.han@samsung.com>
Fri, 10 Jan 2025 01:45:50 +0000 (10:45 +0900)
Change-Id: If4535b4456c3b438225ca49cf21a596d0ae09eca

src/e_mod_main.c

index 1e18296cebc8cb8f796cac1eee78fd148ed37322..992f59e58fb53604e04bc3bc4743f5f9e6e62561 100644 (file)
@@ -144,6 +144,7 @@ static E_Client *client_surface_ec = NULL;
 static E_Text_Input *g_show_text_input = NULL;
 static struct wl_client *g_show_client = NULL;
 static Eina_Bool g_updated_geometry = EINA_FALSE;
+static Eina_Bool g_fullscreen_mode = EINA_FALSE;
 
 /* The candidate's show state that was requested by the application or IME */
 static Eina_Bool g_show_state_candidate = EINA_FALSE;
@@ -1134,6 +1135,8 @@ _e_text_input_deactivate(E_Text_Input *text_input, E_Input_Method *input_method,
                   else
                     zwp_input_method_v1_send_close_connection(input_method->resource, input_method->context->resource);
 
+                  g_fullscreen_mode = EINA_FALSE;
+
                   LOGI("wm_map TEXTINPUT deactivate : %p %p", input_method->resource,
                        input_method->context->resource);
                }
@@ -1429,7 +1432,8 @@ _e_text_input_cb_input_panel_show(struct wl_client *client, struct wl_resource *
               * if we do not, client can't update
               * because they may in manual render state by frame callback mechanism,
               * and also don't have released buffer */
-             e_input_panel_wait_update_set(EINA_TRUE);
+             if (!g_fullscreen_mode)
+               e_input_panel_wait_update_set(EINA_TRUE);
           }
         else
           {
@@ -1496,6 +1500,11 @@ _e_text_input_cb_content_type_set(struct wl_client *client EINA_UNUSED, struct w
 
    CHECK_TEXT_INPUT(resource, text_input);
 
+   if (hint & WL_TEXT_INPUT_CONTENT_HINT_FULLSCREEN_MODE)
+     g_fullscreen_mode = EINA_TRUE;
+   else
+     g_fullscreen_mode = EINA_FALSE;
+
    EINA_LIST_FOREACH(text_input->input_methods, l, input_method)
      {
         if (!input_method || !input_method->context) continue;