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>
This commit is contained in:
parent
7d7b99e2d3
commit
f4dc650585
@ -76,6 +76,7 @@ var InputMethod = GObject.registerClass({
|
|||||||
|
|
||||||
this._context.set_client_commit_preedit(true);
|
this._context.set_client_commit_preedit(true);
|
||||||
this._context.connect('commit-text', this._onCommitText.bind(this));
|
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('delete-surrounding-text', this._onDeleteSurroundingText.bind(this));
|
||||||
this._context.connect('update-preedit-text-with-mode', this._onUpdatePreeditText.bind(this));
|
this._context.connect('update-preedit-text-with-mode', this._onUpdatePreeditText.bind(this));
|
||||||
this._context.connect('show-preedit-text', this._onShowPreeditText.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());
|
this.commit(text.get_text());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_onRequireSurroundingText(_context) {
|
||||||
|
this.request_surrounding();
|
||||||
|
}
|
||||||
|
|
||||||
_onDeleteSurroundingText(_context, offset, nchars) {
|
_onDeleteSurroundingText(_context, offset, nchars) {
|
||||||
try {
|
try {
|
||||||
this.delete_surrounding(offset, nchars);
|
this.delete_surrounding(offset, nchars);
|
||||||
@ -235,7 +240,7 @@ var InputMethod = GObject.registerClass({
|
|||||||
this._surroundingTextCursor = cursor;
|
this._surroundingTextCursor = cursor;
|
||||||
this.emit('surrounding-text-set');
|
this.emit('surrounding-text-set');
|
||||||
|
|
||||||
if (!this._context || !text)
|
if (!this._context || (!text && text !== ''))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let ibusText = IBus.Text.new_from_string(text);
|
let ibusText = IBus.Text.new_from_string(text);
|
||||||
|
Loading…
Reference in New Issue
Block a user