if (!found) return ECORE_CALLBACK_PASS_ON;
if ((ec->w < 1) && (ec->h < 1)) return ECORE_CALLBACK_PASS_ON;
- if (g_text_input && g_text_input->resource && g_input_panel_state != E_INPUT_PANEL_STATE_WILL_HIDE && g_input_panel_state != E_INPUT_PANEL_STATE_DID_HIDE)
+ if (g_text_input && g_text_input->resource &&
+ g_input_panel_state != E_INPUT_PANEL_STATE_WILL_HIDE && g_input_panel_state != E_INPUT_PANEL_STATE_DID_HIDE &&
+ g_updated_geometry)
{
+ /* The geometry of E_Client may not be valid when IME is shown.
+ Assume E_Client has a valid geometry when this callback is called after IME has set the size.
+ */
if (e_input_panel_client_geometry_get(NULL, &x, &y, &w, &h) && !(w <= 1 || h <= 1))
_e_text_input_send_input_panel_geometry(g_text_input->resource, x, y, w, h);
}