inputMethod: Make set_surrounding() send also empty string

Empty surrounding text values needs to be sent to IBus engines
so that the engines know the focus is changed and the values are
updated.
Also InputMethod can forward the "require-surrounding-text" signal
from IBus engine to mutter.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5895
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2496>
(cherry picked from commit f4dc650585)
This commit is contained in:
Takao Fujiwara 2023-01-31 17:42:23 +09:00 committed by Florian Müllner
parent 320cac69e1
commit 846d790d70

View file

@ -76,6 +76,7 @@ var InputMethod = GObject.registerClass({
this._context.set_client_commit_preedit(true);
this._context.connect('commit-text', this._onCommitText.bind(this));
this._context.connect('require-surrounding-text', this._onRequireSurroundingText.bind(this));
this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this));
this._context.connect('update-preedit-text-with-mode', this._onUpdatePreeditText.bind(this));
this._context.connect('show-preedit-text', this._onShowPreeditText.bind(this));
@ -114,6 +115,10 @@ var InputMethod = GObject.registerClass({
this.commit(text.get_text());
}
_onRequireSurroundingText(_context) {
this.request_surrounding();
}
_onDeleteSurroundingText(_context, offset, nchars) {
try {
this.delete_surrounding(offset, nchars);
@ -235,7 +240,7 @@ var InputMethod = GObject.registerClass({
this._surroundingTextCursor = cursor;
this.emit('surrounding-text-set');
if (!this._context || !text)
if (!this._context || (!text && text !== ''))
return;
let ibusText = IBus.Text.new_from_string(text);