Do no send empty preedit string to text-input-v3.
zwp_input_method_v1 has some different semantics comparing to text-input-v3. There is no way to indicate that "clear preedit" with zwp_input_method_v1. In some client (Namely, Gtk), receiving an empty preedit string will also trigger replace selection action. For example, focus into address bar in firefox will automatically select the URL in the address bar, and a following empty preedit string will clear the selection which is not desirable. To avoid such behavior, simply send an empty "done()" to clear text input v3 preedit if preedit is empty.
This commit is contained in:
parent
42110d7a46
commit
119f0d02be
1 changed files with 3 additions and 1 deletions
|
@ -475,7 +475,9 @@ void InputMethod::setPreeditString(uint32_t serial, const QString &text, const Q
|
|||
auto t3 = waylandServer()->seat()->textInputV3();
|
||||
if (t3 && t3->isEnabled()) {
|
||||
preedit.text = text;
|
||||
t3->sendPreEditString(preedit.text, preedit.begin, preedit.end);
|
||||
if (!preedit.text.isEmpty()) {
|
||||
t3->sendPreEditString(preedit.text, preedit.begin, preedit.end);
|
||||
}
|
||||
t3->done();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue