#define BACK_KEY "XF86Back"
static Eina_Bool input_detected = EINA_FALSE;
+static Eina_Bool will_hide = EINA_FALSE;
static Ecore_Event_Filter *_ecore_event_filter_handler = NULL;
static Ecore_IMF_Context *_focused_ctx = NULL;
return EINA_TRUE;
}
+ will_hide = EINA_FALSE;
+
return EINA_FALSE;
}
static void
_input_panel_hide(Ecore_IMF_Context *ctx, Eina_Bool instant)
{
+ will_hide = EINA_TRUE;
+
if (instant || (_hide_timer && ecore_timer_pending_get(_hide_timer) <= 0.0)) {
_clear_hide_timer();
_send_input_panel_hide_request(ctx);
_clear_hide_timer();
// TIZEN_ONLY(20160217): ignore the duplicate show request
- if ((_show_req_ctx == ctx) && _compare_context(_show_req_ctx, ctx)) {
+ if ((_show_req_ctx == ctx) && _compare_context(_show_req_ctx, ctx) && (!will_hide)) {
if (_input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_WILL_SHOW ||
_input_panel_state == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
LOGD("already show. ctx : %p", ctx);
}
}
+ will_hide = EINA_FALSE;
_show_req_ctx = ctx;
//
_input_panel_state = ECORE_IMF_INPUT_PANEL_STATE_HIDE;
if (imcontext->ctx == _show_req_ctx)
_show_req_ctx = NULL;
+
+ will_hide = EINA_FALSE;
break;
case WL_TEXT_INPUT_INPUT_PANEL_STATE_SHOW:
_input_panel_state = ECORE_IMF_INPUT_PANEL_STATE_SHOW;