fix(frontends): restart preedit around commits

This commit is contained in:
2026-08-15 15:42:35 +09:00
parent 67ed2ef478
commit a1ef8a4744
5 changed files with 136 additions and 30 deletions

View File

@@ -420,25 +420,38 @@ engine_active_owner_caret(struct ct *t)
void
engine_commit_contract(struct ct *t)
{
static const struct {
Rune key;
char *one;
char *all;
} cases[] = {
{ 'z', "", "ㅋㅋㅋ" },
{ 'r', "", "ㄱㄱㄱ" },
{ 'd', "", "ㅇㅇㅇ" },
{ 'k', "", "ㅏㅏㅏ" },
};
Keyres res;
Str all, com;
char owner;
int i;
int i, j;
init();
im.l = getlang(LangKO);
sclear(&all);
for(i = 0; i < 3; i++){
res = ownerrequestcap(&owner, Cclientpreedit,
Keypress, 'z', 0);
CT_CHECK(t, res.eaten);
checkstr(t, "repeated consonant commit",
i == 0 ? "" : "", &res.commit);
checkstr(t, "repeated consonant preedit", "", &res.preedit);
sappend(&all, &res.commit);
for(j = 0; j < nelem(cases); j++){
init();
im.l = getlang(LangKO);
sclear(&all);
for(i = 0; i < 3; i++){
res = ownerrequestcap(&owner, Cclientpreedit,
Keypress, cases[j].key, 0);
CT_CHECK(t, res.eaten);
checkstr(t, "repeated jamo commit",
i == 0 ? "" : cases[j].one, &res.commit);
checkstr(t, "repeated jamo preedit", cases[j].one,
&res.preedit);
sappend(&all, &res.commit);
}
sappend(&all, &res.preedit);
checkstr(t, "repeated jamo total", cases[j].all, &all);
}
sappend(&all, &res.preedit);
checkstr(t, "repeated consonant total", "ㅋㅋㅋ", &all);
init();
im.l = getlang(LangJP);