_e_input_panel_surface_cb_ready_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t state EINA_UNUSED)
{
E_Input_Panel_Surface *ips = wl_resource_get_user_data(resource);
+ E_Client *focused_ec = NULL;
if (!g_input_panel) return;
if (g_input_panel->wait_update)
{
- LOGD("IPS::SHOW::READY\n");
- e_input_panel_visibility_change(EINA_TRUE);
+ focused_ec = e_client_focused_get();
+ LOGD("IPS::SHOW::READY (parent:%p, focus:%p)\n", ips->ec ? ips->ec->parent:NULL, focused_ec);
e_input_panel_wait_update_set(EINA_FALSE);
+ if (ips->ec->parent)
+ {
+ if (ips->ec->parent == focused_ec)
+ e_input_panel_visibility_change(EINA_TRUE);
+ else
+ e_input_panel_visibility_change(EINA_FALSE);
+ }
+ else
+ e_input_panel_visibility_change(EINA_FALSE);
}
}