From f4dc6505854a9c54a4893944955000ef38781614 Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Tue, 31 Jan 2023 17:42:23 +0900 Subject: [PATCH] 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: --- js/misc/inputMethod.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js index 3a007d5e9..e008e6411 100644 --- a/js/misc/inputMethod.js +++ b/js/misc/inputMethod.js @@ -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);