Hello community,

here is the log from the commit of package gnome-shell for openSUSE:Factory 
checked in at 2019-01-26 22:17:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-shell (Old)
 and      /work/SRC/openSUSE:Factory/.gnome-shell.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gnome-shell"

Sat Jan 26 22:17:27 2019 rev:158 rq:667742 version:3.30.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-shell/gnome-shell.changes  2018-12-31 
09:39:16.498565922 +0100
+++ /work/SRC/openSUSE:Factory/.gnome-shell.new.28833/gnome-shell.changes       
2019-01-26 22:17:29.243095344 +0100
@@ -1,0 +2,7 @@
+Fri Jan 18 22:51:46 UTC 2019 - bjorn....@gmail.com
+
+- Add gnome-shell-Do-not-call-KeyboardManager.holdKeyboard.patch:
+  keyboard: Do not call KeyboardManager.holdKeyboard() with
+  set-content-type. Patch from upstream stable branch.
+
+-------------------------------------------------------------------

New:
----
  gnome-shell-Do-not-call-KeyboardManager.holdKeyboard.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gnome-shell.spec ++++++
--- /var/tmp/diff_new_pack.KFkw8E/_old  2019-01-26 22:17:29.923094792 +0100
+++ /var/tmp/diff_new_pack.KFkw8E/_new  2019-01-26 22:17:29.927094788 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package gnome-shell
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -48,6 +48,8 @@
 Patch7:         gnome-shell-dash-Destroy-items-child-before-tooltip.patch
 # PATCH-FIX-UPSTREAM 
gnome-shell-st-button-Ignore-pointer-emulated-touch-events.patch -- st-button: 
Ignore pointer emulated touch events
 Patch8:         
gnome-shell-st-button-Ignore-pointer-emulated-touch-events.patch
+# PATCH-FIX-UPSTREAM 
gnome-shell-Do-not-call-KeyboardManager.holdKeyboard.patch -- keyboard: Do not 
call KeyboardManager.holdKeyboard() with set-content-type
+Patch9:         gnome-shell-Do-not-call-KeyboardManager.holdKeyboard.patch
 
 ## NOTE: Keep SLE-only patches at bottom (starting on 1000).
 # PATCH-FEATURE-SLE gnome-shell-gdm-login-applet.patch fate#314545 
dli...@suse.com -- Add an applet on login UI to display suse icon, product 
name, hostname.
@@ -191,6 +193,7 @@
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
+%patch9 -p1
 translation-update-upstream
 
 %if !0%{?is_opensuse}

++++++ gnome-shell-Do-not-call-KeyboardManager.holdKeyboard.patch ++++++
>From ca54b55c01907080a858c9a7e1dc0ad64aa621eb Mon Sep 17 00:00:00 2001
From: Takao Fujiwara <tfuji...@redhat.com>
Date: Fri, 31 Aug 2018 11:22:23 +0000
Subject: [PATCH] keyboard: Do not call KeyboardManager.holdKeyboard() with
 set-content-type

When gnome-shell receives the signal of 'set-content-type' from ibus,
gnome-shell calls KeyboardManager.holdKeyboard() and
KeyboardManager.releaseKeyboard() and the functions change the current
input focus in GNOME Xorg and it could result in closing a popup window
which has a password entry by focusing on the entry.
The solution is to stop to call the APIs on 'set-content-type' signal.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/391


(cherry picked from commit 551e827841626cd8084daa2210b3bf60e5be96be)
---
 js/ui/status/keyboard.js | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index a17e9c43b..1515a1f21 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -360,11 +360,14 @@ var InputSourceManager = new Lang.Class({
         this._settings.connect('per-window-changed', 
this._sourcesPerWindowChanged.bind(this));
         this._sourcesPerWindowChanged();
         this._disableIBus = false;
+        this._reloading = false;
     },
 
     reload() {
+        this._reloading = true;
         
this._keyboardManager.setKeyboardOptions(this._settings.keyboardOptions);
         this._inputSourcesChanged();
+        this._reloading = false;
     },
 
     _ibusReadyCallback(im, ready) {
@@ -458,7 +461,15 @@ var InputSourceManager = new Lang.Class({
     },
 
     activateInputSource(is, interactive) {
-        KeyboardManager.holdKeyboard();
+        // The focus changes during holdKeyboard/releaseKeyboard may trick
+        // the client into hiding UI containing the currently focused entry.
+        // So holdKeyboard/releaseKeyboard are not called when
+        // 'set-content-type' signal is received.
+        // E.g. Focusing on a password entry in a popup in Xorg Firefox
+        // will emit 'set-content-type' signal.
+        // https://gitlab.gnome.org/GNOME/gnome-shell/issues/391
+        if (!this._reloading)
+            KeyboardManager.holdKeyboard();
         this._keyboardManager.apply(is.xkbId);
 
         // All the "xkb:..." IBus engines simply "echo" back symbols,
@@ -473,7 +484,10 @@ var InputSourceManager = new Lang.Class({
         else
             engine = 'xkb:us::eng';
 
-        this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard);
+        if (!this._reloading)
+            this._ibusManager.setEngine(engine, 
KeyboardManager.releaseKeyboard);
+        else
+            this._ibusManager.setEngine(engine);
         this._currentInputSourceChanged(is);
 
         if (interactive)
-- 
2.18.1



Reply via email to