static Ecore_Event_Handler *_win_focus_out_handler = NULL;
static Eina_Bool conformant_reset_done = EINA_FALSE;
static Eina_Bool received_will_hide_event = EINA_FALSE;
+static Eina_Bool will_hide = EINA_FALSE;
static void _send_input_panel_hide_request ();
show_req_ic = NULL;
hide_req_ic = NULL;
+ will_hide = EINA_FALSE;
break;
case ECORE_IMF_INPUT_PANEL_STATE_SHOW:
LOGD ("[input panel has been shown] ctx : %p\n", using_ic);
if (input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_HIDE)
return;
+ will_hide = EINA_TRUE;
hide_req_ic = ctx;
if (instant) {
if ((show_req_ic == ctx) &&
(_compare_context (show_req_ic, ctx) == EINA_TRUE) &&
(input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_WILL_SHOW ||
- input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_SHOW)) {
+ input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_SHOW) &&
+ (!will_hide)) {
LOGD ("already show");
return;
}
+ will_hide = EINA_FALSE;
show_req_ic = ctx;
LOGD ("===============================================================\n");