[gnome-shell/wip/carlosg/im-update-preedit-with-mode] inputMethod: Use update-preedit-with-mode signal
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/im-update-preedit-with-mode] inputMethod: Use update-preedit-with-mode signal
- Date: Fri, 30 Jul 2021 15:18:32 +0000 (UTC)
commit 0fa3f9a4682f28446d7862e511cd4a72f3f97dfe
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Jul 27 16:52:32 2021 +0200
inputMethod: Use update-preedit-with-mode signal
This signal announces the preferred commit mode of the preedit text when
the input context is reset. Keep this mode around, and ensure to honor this
mode (e.g. maybe commit the preedit string) whenever the input method would
be reset.
This is delegated to the internal layers, so propagate this mode via
clutter_input_method_set_preedit_text().
js/misc/inputMethod.js | 28 +++++++++++++++-------------
1 file changed, 15 insertions(+), 13 deletions(-)
---
diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js
index 0bc1462ef1..25b02e35b8 100644
--- a/js/misc/inputMethod.js
+++ b/js/misc/inputMethod.js
@@ -62,9 +62,10 @@ class InputMethod extends Clutter.InputMethod {
return;
}
+ this._context.set_client_commit_preedit(true);
this._context.connect('commit-text', this._onCommitText.bind(this));
this._context.connect('delete-surrounding-text', this._onDeleteSurroundingText.bind(this));
- this._context.connect('update-preedit-text', 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('hide-preedit-text', this._onHidePreeditText.bind(this));
this._context.connect('forward-key-event', this._onForwardKeyEvent.bind(this));
@@ -105,29 +106,30 @@ class InputMethod extends Clutter.InputMethod {
}
}
- _onUpdatePreeditText(_context, text, pos, visible) {
+ _onUpdatePreeditText(_context, text, pos, visible, mode) {
if (text == null)
return;
let preedit = text.get_text();
if (visible)
- this.set_preedit_text(preedit, pos);
+ this.set_preedit_text(preedit, pos, mode);
else if (this._preeditVisible)
- this.set_preedit_text(null, pos);
+ this.set_preedit_text(null, pos, mode);
this._preeditStr = preedit;
this._preeditPos = pos;
this._preeditVisible = visible;
+ this._preeditCommitMode = mode;
}
_onShowPreeditText() {
this._preeditVisible = true;
- this.set_preedit_text(this._preeditStr, this._preeditPos);
+ this.set_preedit_text(this._preeditStr, this._preeditPos, this._preeditCommitMode);
}
_onHidePreeditText() {
- this.set_preedit_text(null, this._preeditPos);
+ this.set_preedit_text(null, this._preeditPos, this._preeditCommitMode);
this._preeditVisible = false;
}
@@ -165,7 +167,7 @@ class InputMethod extends Clutter.InputMethod {
if (this._preeditStr) {
// Unset any preedit text
- this.set_preedit_text(null, 0);
+ this.set_preedit_text(null, 0, this._preeditCommitMode);
this._preeditStr = null;
}
@@ -177,16 +179,16 @@ class InputMethod extends Clutter.InputMethod {
}
vfunc_reset() {
+ if (this._preeditStr !== null) {
+ // Unset any preedit text
+ this.set_preedit_text(null, 0, Clutter.PreeditResetMode.CLEAR);
+ this._preeditStr = null;
+ }
+
if (this._context) {
this._context.reset();
this._emitRequestSurrounding();
}
-
- if (this._preeditStr) {
- // Unset any preedit text
- this.set_preedit_text(null, 0);
- this._preeditStr = null;
- }
}
vfunc_set_cursor_location(rect) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]