}
}
+static Eina_Bool
+check_preedit_empty(WaylandIMContext *imcontext)
+{
+ if (!imcontext) return EINA_TRUE;
+
+ if (imcontext->preedit_text) return EINA_FALSE;
+ if (imcontext->preedit_attrs) return EINA_FALSE;
+ if (imcontext->preedit_cursor != 0) return EINA_FALSE;
+ if (imcontext->preedit_commit) return EINA_FALSE;
+
+ return EINA_TRUE;
+}
+
static void
text_input_commit_string(void *data,
struct wl_text_input *text_input EINA_UNUSED,
if (!imcontext) return;
+ Eina_Bool preedit_empty = check_preedit_empty(imcontext);
+
commit_preedit (imcontext);
clear_preedit(imcontext);
if (!imcontext->input) return;
- if (imcontext->text_input) {
+ if (imcontext->text_input && !preedit_empty) {
wl_text_input_reset(imcontext->text_input);
}
update_state(imcontext);