Ecore_IMF_Context *input_panel_ctx = NULL;
static Ecore_Event_Handler *_win_focus_out_handler = NULL;
static Eina_Bool conformant_reset_done = EINA_FALSE;
+static Eina_Bool candidate_conformant_reset_done = EINA_FALSE;
static Eina_Bool received_will_hide_event = EINA_FALSE;
+static Eina_Bool received_candidate_will_hide_event = EINA_FALSE;
static Eina_Bool will_hide = EINA_FALSE;
static void _send_input_panel_hide_request ();
{
LOGD ("[%s]\n", __func__);
evas_event_callback_del_full (e, EVAS_CALLBACK_RENDER_POST, _candidate_render_post_cb, NULL);
+ candidate_conformant_reset_done = EINA_TRUE;
isf_imf_context_input_panel_send_candidate_will_hide_ack (get_using_ic (ECORE_IMF_INPUT_PANEL_STATE_EVENT, ECORE_IMF_INPUT_PANEL_STATE_SHOW));
}
sx = sy = sw = sh = 0;
if (state == ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF) {
+ conformant_reset_done = EINA_FALSE;
+ candidate_conformant_reset_done = EINA_FALSE;
if (active_context_canvas && _conformant_get ()) {
evas_event_callback_add (active_context_canvas, EVAS_CALLBACK_RENDER_POST, _render_post_cb, NULL);
}
}
else if (state == ECORE_X_VIRTUAL_KEYBOARD_STATE_ON) {
conformant_reset_done = EINA_FALSE;
+ candidate_conformant_reset_done = EINA_FALSE;
+ if (active_context_canvas && _conformant_get ()) {
+ evas_event_callback_add (active_context_canvas, EVAS_CALLBACK_RENDER_POST, _candidate_render_post_cb, NULL);
+ }
LOGD ("[ECORE_X_VIRTUAL_KEYBOARD_STATE_ON] geometry x : %d, y : %d, w : %d, h : %d\n", sx, sy, sw, sh);
}
} else {
if (type == ECORE_IMF_CANDIDATE_PANEL_STATE_EVENT &&
value == ECORE_IMF_CANDIDATE_PANEL_HIDE &&
notified_state != ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
- if (active_context_canvas && _conformant_get ())
- evas_event_callback_add (active_context_canvas, EVAS_CALLBACK_RENDER_POST, _candidate_render_post_cb, NULL);
- else
+ received_candidate_will_hide_event = TRUE;
isf_imf_context_input_panel_send_candidate_will_hide_ack (using_ic);
}
}
LOGD ("No hide timer\n");
}
+ candidate_conformant_reset_done = TRUE;
isf_imf_context_input_panel_send_candidate_will_hide_ack (get_using_ic (ECORE_IMF_INPUT_PANEL_STATE_EVENT, ECORE_IMF_INPUT_PANEL_STATE_SHOW));
if (_prop_change_handler) {
if (IfInitContext == false) {
_isf_imf_context_init ();
}
- _isf_imf_context_input_panel_send_candidate_will_hide_ack (_get_context_id (ctx));
+
+ if (_conformant_get ()) {
+ if (candidate_conformant_reset_done && received_candidate_will_hide_event) {
+ LOGD ("Send candidate will hide ack\n");
+ _isf_imf_context_input_panel_send_candidate_will_hide_ack (_get_context_id (ctx));
+ candidate_conformant_reset_done = EINA_FALSE;
+ received_candidate_will_hide_event = EINA_FALSE;
+ }
+ } else {
+ _isf_imf_context_input_panel_send_candidate_will_hide_ack (_get_context_id (ctx));
+ }
}
/**