From b4a8941f87de2380dad3b39121cb6419c4a1861c4b924ee861e5b88c965b8c5a Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Mon, 16 Oct 2017 14:17:04 +0000 Subject: [PATCH] Accepting request 534192 from GNOME:Next 1 OBS-URL: https://build.opensuse.org/request/show/534192 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-shell?expand=0&rev=339 --- ...shell-osk-dont-popup-when-not-needed.patch | 175 ++++++++++++++++++ gnome-shell.changes | 8 + gnome-shell.spec | 3 + 3 files changed, 186 insertions(+) create mode 100644 gnome-shell-osk-dont-popup-when-not-needed.patch diff --git a/gnome-shell-osk-dont-popup-when-not-needed.patch b/gnome-shell-osk-dont-popup-when-not-needed.patch new file mode 100644 index 0000000..0b0cd5c --- /dev/null +++ b/gnome-shell-osk-dont-popup-when-not-needed.patch @@ -0,0 +1,175 @@ +From 23d3b716c72d036ae7030fb8335acf168ea32685 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 13 Oct 2017 17:46:58 +0200 +Subject: [PATCH] keyboard: Minor cleanup + +_syncEnabled() will call _setupKeyboard() if necessary, so no need +to call it explicitly before. + +https://bugzilla.gnome.org/show_bug.cgi?id=788188 +--- + js/ui/keyboard.js | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js +index da36c3615..87635ce83 100644 +--- a/js/ui/keyboard.js ++++ b/js/ui/keyboard.js +@@ -324,10 +324,8 @@ var Keyboard = new Lang.Class({ + + _sync: function () { + if (this._keyboard && +- this._keyboard.keyboard_type != this._keyboardSettings.get_string(KEYBOARD_TYPE)) { ++ this._keyboard.keyboard_type != this._keyboardSettings.get_string(KEYBOARD_TYPE)) + this._destroyKeyboard(); +- this._setupKeyboard(); +- } + + this._syncEnabled(); + }, +-- +2.14.2From f20a30e3a6b4cf305a64780295bd6483461763a5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Mon, 9 Oct 2017 12:51:08 +0200 +Subject: [PATCH] keyboard: Split enabled setting from enabled state + +We enable the keyboard when it is either enabled explicitly via +a11y settings or when using a touch device. We'll soon want to +special-case changes to the GSettings, so track its value in a +dedicated property. + +https://bugzilla.gnome.org/show_bug.cgi?id=788188 +--- + js/ui/keyboard.js | 23 +++++++++++++---------- + 1 file changed, 13 insertions(+), 10 deletions(-) + +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js +index 87635ce83..771f23dc2 100644 +--- a/js/ui/keyboard.js ++++ b/js/ui/keyboard.js +@@ -168,6 +168,9 @@ var Keyboard = new Lang.Class({ + this._caretTrackingEnabled = false; + this._updateCaretPositionId = 0; + ++ this._enableKeyboard = false; // a11y settings value ++ this._enabled = false; // enabled state (by setting or device type) ++ + this._keyboardSettings = new Gio.Settings({ schema_id: KEYBOARD_SCHEMA }); + this._keyboardSettings.connect('changed', Lang.bind(this, this._sync)); + this._a11yApplicationsSettings = new Gio.Settings({ schema_id: A11Y_APPLICATIONS_SCHEMA }); +@@ -305,14 +308,14 @@ var Keyboard = new Lang.Class({ + }, + + _syncEnabled: function () { +- this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD) || +- this._lastDeviceIsTouchscreen(); +- if (!this._enableKeyboard && !this._keyboard) ++ this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD); ++ this._enabled = this._enableKeyboard || this._lastDeviceIsTouchscreen(); ++ if (!this._enabled && !this._keyboard) + return; + +- this._setCaretTrackerEnabled(this._enableKeyboard); ++ this._setCaretTrackerEnabled(this._enabled); + +- if (this._enableKeyboard) { ++ if (this._enabled) { + if (!this._keyboard) + this._setupKeyboard(); + else +@@ -509,7 +512,7 @@ var Keyboard = new Lang.Class({ + }, + + _redraw: function () { +- if (!this._enableKeyboard) ++ if (!this._enabled) + return; + + let monitor = Main.layoutManager.keyboardMonitor; +@@ -614,7 +617,7 @@ var Keyboard = new Lang.Class({ + }, + + show: function (monitor) { +- if (!this._enableKeyboard) ++ if (!this._enabled) + return; + + this._clearShowIdle(); +@@ -650,7 +653,7 @@ var Keyboard = new Lang.Class({ + }, + + hide: function () { +- if (!this._enableKeyboard) ++ if (!this._enabled) + return; + + this._clearShowIdle(); +@@ -713,14 +716,14 @@ var Keyboard = new Lang.Class({ + }, + + setCursorLocation: function(x, y, w, h) { +- if (!this._enableKeyboard) ++ if (!this._enabled) + return; + + // this._setLocation(x, y); + }, + + setEntryLocation: function(x, y, w, h) { +- if (!this._enableKeyboard) ++ if (!this._enabled) + return; + + // this._setLocation(x, y); +-- +2.14.2From e73a0724bbc5f9aab3ce856324a8e6e83690173c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Mon, 9 Oct 2017 12:53:04 +0200 +Subject: [PATCH] keyboard: Don't pop up on touch events + +We want touch events to enable the keyboard and focus tracking, but +not to actually show it right away. Implement that behavior by only +changing the visibility of the keyboard when triggered by a GSettings +change. + +https://bugzilla.gnome.org/show_bug.cgi?id=788188 +--- + js/ui/keyboard.js | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js +index 771f23dc2..9f1cb56c6 100644 +--- a/js/ui/keyboard.js ++++ b/js/ui/keyboard.js +@@ -308,6 +308,7 @@ var Keyboard = new Lang.Class({ + }, + + _syncEnabled: function () { ++ let wasEnabled = this._enableKeyboard; + this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD); + this._enabled = this._enableKeyboard || this._lastDeviceIsTouchscreen(); + if (!this._enabled && !this._keyboard) +@@ -315,14 +316,15 @@ var Keyboard = new Lang.Class({ + + this._setCaretTrackerEnabled(this._enabled); + +- if (this._enabled) { +- if (!this._keyboard) +- this._setupKeyboard(); +- else +- Main.layoutManager.showKeyboard(); +- } else { ++ if (this._enabled && !this._keyboard) { ++ this._setupKeyboard(); + Main.layoutManager.hideKeyboard(true); + } ++ ++ if (this._enableKeyboard && !wasEnabled) ++ Main.layoutManager.showKeyboard(); ++ else if (!this._enableKeyboard && wasEnabled) ++ Main.layoutManager.hideKeyboard(true); + }, + + _sync: function () { +-- +2.14.2 \ No newline at end of file diff --git a/gnome-shell.changes b/gnome-shell.changes index 0f281a8..3c93f3e 100644 --- a/gnome-shell.changes +++ b/gnome-shell.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sat Oct 14 20:53:32 UTC 2017 - badshah400@gmail.com + +- Add gnome-shell-osk-dont-popup-when-not-needed.patch: Stop the + on-screen keyboard from showing up when touchscreen use doesn't + activate a text field; patch taken from upstream bug report + (bgo#788188). + ------------------------------------------------------------------- Mon Oct 9 06:25:05 UTC 2017 - xwang@suse.com diff --git a/gnome-shell.spec b/gnome-shell.spec index b0ce74d..aedfad4 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -39,6 +39,8 @@ Patch1: gnome-shell-private-connection.patch Patch2: gnome-shell-disable-ibus-when-not-installed.patch # PATCH-FIX-UPSTREAM gnome-shell-Avoid-loginDialog-grab-focus-when-locked.patch bsc#1058521 bgo#788169 xwang@suse.com -- Avoid login dialog grabs focus when screen locked Patch3: gnome-shell-Avoid-loginDialog-grab-focus-when-locked.patch +# PATCH-FIX-UPSTREAM gnome-shell-osk-dont-popup-when-not-needed.patch bgo#788188 badshah400@gmail.com -- Stop the on-screen keyboard from showing up when touchscreen use doesn't activate a text field; patch taken from upstream bug report +Patch4: gnome-shell-osk-dont-popup-when-not-needed.patch ## NOTE: Keep SLE only patches at bottom (starting on 1000). # PATCH-FEATURE-SLE gnome-shell-gdm-login-applet.patch fate#314545 dliang@suse.com -- Add an applet on login UI to display suse icon, product name, hostname. @@ -187,6 +189,7 @@ into GNOME Shell calendar. #patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 %if !0%{?is_opensuse} %patch1001 -p1