fix: pass empty search backspace through

This commit is contained in:
2026-08-12 21:35:33 +09:00
parent 768ac3de74
commit 125e9349c0
4 changed files with 42 additions and 2 deletions

View File

@@ -620,8 +620,10 @@ searchkey(u32int ks, u32int mod, Str *com)
return 1; return 1;
} }
if(ks == Kback){ if(ks == Kback){
if(search.raw.n == 0) if(search.raw.n == 0){
return 1; endsearch();
return 0;
}
spopr(&search.raw); spopr(&search.raw);
searchquery(); searchquery();
return 1; return 1;

View File

@@ -1305,6 +1305,42 @@ engine_hanja_korean_keys(struct ct *t)
searchend(&f); searchend(&f);
} }
void
engine_hanja_backspace(struct ct *t)
{
Searchfix f;
Str com;
hanjabegin(&f, LangKO);
sclear(&com);
CT_CHECK(t, keystroke('h', Mctrl, &com));
if(!typekeys(t, "gks", &com))
goto cleanup;
checkstr(t, "Hanja before backspace", "", &search.text);
CT_EQ_INT(t, 2, im.nkouho);
CT_CHECK(t, keystroke(Kback, 0, &com));
checkstr(t, "Hanja final backspace", "", &search.text);
CT_EQ_INT(t, 0, im.nkouho);
CT_CHECK(t, keystroke(Kback, 0, &com));
checkstr(t, "Hanja vowel backspace", "", &search.text);
CT_CHECK(t, keystroke(Kback, 0, &com));
checkstr(t, "empty Hanja search", "", &search.text);
CT_EQ_INT(t, LangHANJA, search.lang);
CT_CHECK(t, !keystroke(Kback, 0, &com));
CT_EQ_INT(t, 0, search.lang);
if(!typekeys(t, "gks", &com))
goto cleanup;
CT_CHECK(t, keystroke('h', Mctrl, &com));
checkstr(t, "preedit committed before Hanja", "", &com);
CT_EQ_INT(t, LangHANJA, search.lang);
CT_CHECK(t, !keystroke(Kback, 0, &com));
CT_EQ_INT(t, 0, search.lang);
CT_EQ_INT(t, LangKO, im.l->lang);
cleanup:
searchend(&f);
}
void void
engine_hanja_input_languages(struct ct *t) engine_hanja_input_languages(struct ct *t)
{ {

View File

@@ -57,6 +57,7 @@ void engine_emoji_dictionary_identity(struct ct*);
void engine_hanja_search(struct ct*); void engine_hanja_search(struct ct*);
void engine_hanja_unknown_and_cancel(struct ct*); void engine_hanja_unknown_and_cancel(struct ct*);
void engine_hanja_korean_keys(struct ct*); void engine_hanja_korean_keys(struct ct*);
void engine_hanja_backspace(struct ct*);
void engine_hanja_input_languages(struct ct*); void engine_hanja_input_languages(struct ct*);
void engine_randomized_stress(struct ct*); void engine_randomized_stress(struct ct*);
void engine_full_boundary_passthrough(struct ct*); void engine_full_boundary_passthrough(struct ct*);

View File

@@ -111,6 +111,7 @@ static const struct ct_test tests[] = {
{ "engine/hanja-search", engine_hanja_search }, { "engine/hanja-search", engine_hanja_search },
{ "engine/hanja-unknown-cancel", engine_hanja_unknown_and_cancel }, { "engine/hanja-unknown-cancel", engine_hanja_unknown_and_cancel },
{ "engine/hanja-korean-keys", engine_hanja_korean_keys }, { "engine/hanja-korean-keys", engine_hanja_korean_keys },
{ "engine/hanja-backspace", engine_hanja_backspace },
{ "engine/hanja-input-languages", engine_hanja_input_languages }, { "engine/hanja-input-languages", engine_hanja_input_languages },
{ "engine/randomized-stress", engine_randomized_stress }, { "engine/randomized-stress", engine_randomized_stress },
{ "engine/full-boundary-passthrough", engine_full_boundary_passthrough }, { "engine/full-boundary-passthrough", engine_full_boundary_passthrough },