Changed to update layout instantly when moving and resizing the IME 77/311477/1
authorInhong Han <inhong1.han@samsung.com>
Mon, 20 May 2024 23:44:34 +0000 (08:44 +0900)
committerInhong Han <inhong1.han@samsung.com>
Wed, 22 May 2024 00:56:15 +0000 (09:56 +0900)
Change-Id: I523cb1f9b6f1d81bd51b4aabf915344e0d80c393

src/e_mod_input_panel.c

index 3d94d82bde8363de20eec0b5f3f1334d1b3e28ee..0d16cb5d61e5a88d9e5968b34419613637c3b90e 100644 (file)
@@ -619,9 +619,6 @@ _e_input_panel_position_set(E_Client *ec, int w, int h)
 
    if (ec->vkbd.floating)
      {
-        if (g_floating_info && g_floating_info->resizing)
-          return;
-
         int sx, sy;
         if ((is_portrait && !g_floating_info->init_portrait_position) || (!is_portrait && !g_floating_info->init_landscape_position))
           _e_input_panel_init_floating_position(ec);
@@ -633,12 +630,10 @@ _e_input_panel_position_set(E_Client *ec, int w, int h)
 
         _e_input_panel_convert_floating_position(ec, sx, sy, &nx, &ny, E_INPUT_PANEL_COORDINATE_TYPE_LOGICAL);
 
-        if (g_floating_info->new_width > 0 && g_floating_info->new_height > 0)
+        if (g_floating_info->resizing && g_floating_info->new_width > 0 && g_floating_info->new_height > 0)
           {
              LOGI("x : %d, y : %d, w : %d, h : %d", nx, ny, g_floating_info->new_width, g_floating_info->new_height);
-             g_floating_info->resizing = EINA_TRUE;
              e_client_util_move_resize_without_frame(ec, nx, ny, g_floating_info->new_width, g_floating_info->new_height);
-             g_floating_info->resizing = EINA_FALSE;
              g_floating_info->new_width = -1;
              g_floating_info->new_height = -1;
              return;
@@ -975,11 +970,15 @@ _e_ips_cb_evas_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *e
    if (e_object_is_del(E_OBJECT(ec)))
      return;
 
+   g_floating_info->resizing = EINA_TRUE;
+
    evas_object_geometry_get(obj, NULL, NULL, &w, &h);
 
    LOGI("current angle : %d, w: %d, h: %d", ec->e.state.rot.ang.curr, w, h);
    _e_input_panel_position_set(ec, w, h);
 
+   g_floating_info->resizing = EINA_FALSE;
+
    ips = _e_input_panel_surface_get(ec);
    if (!ips) return;
    if (!ips->resizing) return;