[gnome-shell/wip/carlosg/no-toggle-panel-across-focus: 8/8] inputMethod: Handle OSK hiding after unfocus
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/no-toggle-panel-across-focus: 8/8] inputMethod: Handle OSK hiding after unfocus
- Date: Sat, 9 Feb 2019 18:51:52 +0000 (UTC)
commit b9a2adcd806620effca9994906b455bde0279a4b
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Feb 8 23:00:18 2019 +0100
inputMethod: Handle OSK hiding after unfocus
Set a small timeout in order to let focus changes preserve OSK state. If
focus is eventually unset, the OSK will be hidden.
https://gitlab.gnome.org/GNOME/gtk/issues/1277
js/misc/inputMethod.js | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
---
diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js
index ce2002a09..0e5dcc419 100644
--- a/js/misc/inputMethod.js
+++ b/js/misc/inputMethod.js
@@ -1,5 +1,5 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-const { Clutter, GObject, IBus } = imports.gi;
+const { Clutter, GLib, GObject, IBus } = imports.gi;
const Keyboard = imports.ui.status.keyboard;
@@ -13,6 +13,7 @@ class InputMethod extends Clutter.InputMethod {
this._preeditStr = '';
this._preeditPos = 0;
this._preeditVisible = false;
+ this._hidePanelId = 0;
this._ibus = IBus.Bus.new_async();
this._ibus.connect('connected', this._onConnected.bind(this));
this._ibus.connect('disconnected', this._clear.bind(this));
@@ -136,6 +137,11 @@ class InputMethod extends Clutter.InputMethod {
this._updateCapabilities();
this._emitRequestSurrounding();
}
+
+ if (this._hidePanelId) {
+ GLib.source_remove(this._hidePanelId);
+ this._hidePanelId = 0;
+ }
}
vfunc_focus_out() {
@@ -150,6 +156,12 @@ class InputMethod extends Clutter.InputMethod {
this.set_preedit_text(null, 0);
this._preeditStr = null;
}
+
+ this._hidePanelId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 50, () => {
+ this.set_input_panel_state(Clutter.InputPanelState.OFF);
+ this._hidePanelId = 0;
+ return GLib.SOURCE_REMOVE;
+ });
}
vfunc_reset() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]