[gnome-shell/wip/carlosg/osk-x11-activation: 2/2] keyboard: Listen to IbusPanelService::focus-in/out to track focus changes
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/carlosg/osk-x11-activation: 2/2] keyboard: Listen to IbusPanelService::focus-in/out to track focus changes
- Date: Tue, 18 Sep 2018 11:01:53 +0000 (UTC)
commit 60d99e28f62ff0591f14f51e859c525bd82827b6
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Sep 18 12:54:29 2018 +0200
keyboard: Listen to IbusPanelService::focus-in/out to track focus changes
In X11 there's no input panel state requests, so restore the previous behavior
that focused entries would always toggle the OSK on there.
js/misc/ibusManager.js | 5 +++++
js/ui/keyboard.js | 16 ++++++++++++++++
2 files changed, 21 insertions(+)
---
diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js
index 6452e492f..34f198c35 100644
--- a/js/misc/ibusManager.js
+++ b/js/misc/ibusManager.js
@@ -119,6 +119,11 @@ var IBusManager = new Lang.Class({
let cursorLocation = { x, y, width: w, height: h };
this.emit('set-cursor-location', cursorLocation);
});
+ this._panelService.connect('focus-in', (panel, path) => {
+ if (!GLib.str_has_suffix(path, '/InputContext_1'))
+ this.emit ('focus-in');
+ });
+ this._panelService.connect('focus-out', () => { this.emit('focus-out'); });
try {
// IBus versions older than 1.5.10 have a bug which
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index be0146344..491495c57 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -519,6 +519,12 @@ var FocusTracker = new Lang.Class({
this._setCurrentRect(rect);
});
+ this._ibusManager.connect('focus-in', () => {
+ this.emit('focus-changed', true);
+ });
+ this._ibusManager.connect('focus-out', () => {
+ this.emit('focus-changed', false);
+ });
},
get currentWindow() {
@@ -590,6 +596,16 @@ var Keyboard = new Lang.Class({
this._animFocusedWindow = null;
this._oskFocusWindow = null;
});
+ this._focusTracker.connect('focus-changed', (tracker, focused) => {
+ // Valid only for X11
+ if (Meta.is_wayland_compositor())
+ return;
+
+ if (focused)
+ this.show(Main.layoutManager.focusIndex);
+ else
+ this.hide();
+ });
Meta.get_backend().connect('last-device-changed',
(backend, deviceId) => {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]