fix: pass empty search backspace through
This commit is contained in:
6
strans.c
6
strans.c
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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*);
|
||||||
|
|||||||
@@ -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 },
|
||||||
|
|||||||
Reference in New Issue
Block a user