Hello community,

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

Package is "gnome-shell"

Thu Feb 28 21:26:36 2019 rev:159 rq:677978 version:3.30.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-shell/gnome-shell.changes  2019-01-26 
22:17:29.243095344 +0100
+++ /work/SRC/openSUSE:Factory/.gnome-shell.new.28833/gnome-shell.changes       
2019-02-28 21:26:37.709868387 +0100
@@ -1,0 +2,13 @@
+Thu Feb 21 08:48:27 UTC 2019 - [email protected]
+
+- Add upstream bug fix patches from the stable branch:
+  + gnome-shell-panel-Dont-allow-opening-hidden-menus.patch: panel:
+    Don't allow opening hidden menus via keybindings.
+  + gnome-shell-disable-POPUP-keybindings-in-unlock-screen.patch:
+    shellActionModes: disable POPUP keybindings in unlock screen.
+  + gnome-shell-inputMethod-Avoid-calling-set_preedit_text.patch:
+    inputMethod: Avoid calling set_preedit_text() if unnecessary.
+  + gnome-shell-inputMethod-Keep-track-preedit-string-visibility.patch:
+    inputMethod: Keep track of preedit string visibility.
+
+-------------------------------------------------------------------

New:
----
  gnome-shell-disable-POPUP-keybindings-in-unlock-screen.patch
  gnome-shell-inputMethod-Avoid-calling-set_preedit_text.patch
  gnome-shell-inputMethod-Keep-track-preedit-string-visibility.patch
  gnome-shell-panel-Dont-allow-opening-hidden-menus.patch

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

Other differences:
------------------
++++++ gnome-shell.spec ++++++
--- /var/tmp/diff_new_pack.zR0fYM/_old  2019-02-28 21:26:38.625868081 +0100
+++ /var/tmp/diff_new_pack.zR0fYM/_new  2019-02-28 21:26:38.625868081 +0100
@@ -50,6 +50,14 @@
 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
+# PATCH-FIX-UPSTREAM gnome-shell-panel-Dont-allow-opening-hidden-menus.patch 
-- panel: Don't allow opening hidden menus via keybindings
+Patch10:        gnome-shell-panel-Dont-allow-opening-hidden-menus.patch
+# PATCH-FIX-UPSTREAM 
gnome-shell-disable-POPUP-keybindings-in-unlock-screen.patch -- 
shellActionModes: disable POPUP keybindings in unlock screen
+Patch11:        gnome-shell-disable-POPUP-keybindings-in-unlock-screen.patch
+# PATCH-FIX-UPSTREAM 
gnome-shell-inputMethod-Avoid-calling-set_preedit_text.patch -- inputMethod: 
Avoid calling set_preedit_text() if unnecessary
+Patch12:        gnome-shell-inputMethod-Avoid-calling-set_preedit_text.patch
+# PATCH-FIX-UPSTREAM 
gnome-shell-inputMethod-Keep-track-preedit-string-visibility.patch -- 
inputMethod: Keep track of preedit string visibility
+Patch13:        
gnome-shell-inputMethod-Keep-track-preedit-string-visibility.patch
 
 ## NOTE: Keep SLE-only patches at bottom (starting on 1000).
 # PATCH-FEATURE-SLE gnome-shell-gdm-login-applet.patch fate#314545 
[email protected] -- Add an applet on login UI to display suse icon, product 
name, hostname.
@@ -194,6 +202,10 @@
 %patch7 -p1
 %patch8 -p1
 %patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
 translation-update-upstream
 
 %if !0%{?is_opensuse}

++++++ gnome-shell-disable-POPUP-keybindings-in-unlock-screen.patch ++++++
>From e23f4d6c7c300e579db21bb9dffeeaace6f39959 Mon Sep 17 00:00:00 2001
From: Ray Strode <[email protected]>
Date: Wed, 23 Jan 2019 15:59:42 -0500
Subject: [PATCH] shellActionModes: disable POPUP keybindings in unlock screen

Certain keybindings should continue to work even when a popup
menu is on screen. For instance, the keybinding for showing
the app menu and the keyinding for showing the calendar are
examples.

This is achieved by putting in place a special "POPUP" action
mode, whenever a popup menu is active.  This mode replaces
the (e.g., "NORMAL" or "OVERVIEW") action mode that was in place
for as long as the popup menu is active.

But those keybindings should not work when the user is at the
unlock dialog (which uses an action mode of "UNLOCK").

Unfortunately, since commit c79d24b6 they do.

This commit addresses the problem by forcing the action mode
to NONE at the unlock screen when popups are visible.

CVE-2019-3820

Closes https://gitlab.gnome.org/GNOME/gnome-shell/issues/851
---
 js/gdm/authPrompt.js  | 3 ++-
 js/gdm/loginDialog.js | 3 ++-
 js/ui/shellEntry.js   | 6 ++++--
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index a0a4a21d6..78e0454e3 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -11,6 +11,7 @@ const Animation = imports.ui.animation;
 const Batch = imports.gdm.batch;
 const GdmUtil = imports.gdm.util;
 const Params = imports.misc.params;
+const Shell = imports.gi.Shell;
 const ShellEntry = imports.ui.shellEntry;
 const Tweener = imports.ui.tweener;
 const UserWidget = imports.ui.userWidget;
@@ -99,7 +100,7 @@ var AuthPrompt = new Lang.Class({
                          x_align: St.Align.START });
         this._entry = new St.Entry({ style_class: 'login-dialog-prompt-entry',
                                      can_focus: true });
-        ShellEntry.addContextMenu(this._entry, { isPassword: true });
+        ShellEntry.addContextMenu(this._entry, { isPassword: true, actionMode: 
Shell.ActionMode.NONE });
 
         this.actor.add(this._entry,
                        { expand: true,
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index bf7967700..370590902 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -342,7 +342,8 @@ var SessionMenuButton = new Lang.Class({
                  this._button.remove_style_pseudo_class('active');
         });
 
-        this._manager = new PopupMenu.PopupMenuManager({ actor: this._button 
});
+        this._manager = new PopupMenu.PopupMenuManager({ actor: this._button },
+                                                       { actionMode: 
Shell.ActionMode.NONE });
         this._manager.addMenu(this._menu);
 
         this._button.connect('clicked', () => { this._menu.toggle(); });
diff --git a/js/ui/shellEntry.js b/js/ui/shellEntry.js
index 9db5136e6..09bb9bbd6 100644
--- a/js/ui/shellEntry.js
+++ b/js/ui/shellEntry.js
@@ -9,6 +9,7 @@ const BoxPointer = imports.ui.boxpointer;
 const Main = imports.ui.main;
 const Params = imports.misc.params;
 const PopupMenu = imports.ui.popupMenu;
+const Shell = imports.gi.Shell;
 
 var EntryMenu = new Lang.Class({
     Name: 'ShellEntryMenu',
@@ -150,11 +151,12 @@ function addContextMenu(entry, params) {
     if (entry.menu)
         return;
 
-    params = Params.parse (params, { isPassword: false });
+    params = Params.parse (params, { isPassword: false, actionMode: 
Shell.ActionMode.POPUP });
 
     entry.menu = new EntryMenu(entry);
     entry.menu.isPassword = params.isPassword;
-    entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry });
+    entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry },
+                                                        { actionMode: 
params.actionMode });
     entry._menuManager.addMenu(entry.menu);
 
     // Add an event handler to both the entry and its clutter_text; the former
-- 
2.18.1

++++++ gnome-shell-inputMethod-Avoid-calling-set_preedit_text.patch ++++++
>From 401062800186ca26135d270f2285d8b2b5446437 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <[email protected]>
Date: Tue, 13 Nov 2018 18:26:13 +0100
Subject: [PATCH] inputMethod: Avoid calling set_preedit_text() if unnecessary

This is easier down on clients.

(cherry-picked from 8c3811a866017943c276fa7d9e2aed4c0f0554ae)
---
 js/misc/inputMethod.js | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js
index 4a92dc49b..e22dfccc5 100644
--- a/js/misc/inputMethod.js
+++ b/js/misc/inputMethod.js
@@ -144,8 +144,11 @@ var InputMethod = new Lang.Class({
             this._updateCapabilities();
         }
 
-        // Unset any preedit text
-        this.set_preedit_text(null, 0);
+        if (this._preeditStr) {
+            // Unset any preedit text
+            this.set_preedit_text(null, 0);
+            this._preeditStr = null;
+        }
     },
 
     vfunc_reset() {
@@ -154,8 +157,11 @@ var InputMethod = new Lang.Class({
             this._emitRequestSurrounding();
         }
 
-        // Unset any preedit text
-        this.set_preedit_text(null, 0);
+        if (this._preeditStr) {
+            // Unset any preedit text
+            this.set_preedit_text(null, 0);
+            this._preeditStr = null;
+        }
     },
 
     vfunc_set_cursor_location(rect) {
-- 
2.18.1

++++++ gnome-shell-inputMethod-Keep-track-preedit-string-visibility.patch ++++++
>From 1cda65973272baff218244e69dca0afc329ba6da Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <[email protected]>
Date: Tue, 13 Nov 2018 18:28:15 +0100
Subject: [PATCH] inputMethod: Keep track of preedit string visibility

So we can silence update-preedit-text signals that keep the
preedit string invisible.

Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1447

(cherry-picked from 6f5a099184a1a5ecf558b36f2d00d2bfb074628e)
---
 js/misc/inputMethod.js | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js
index e22dfccc5..0f5590b3f 100644
--- a/js/misc/inputMethod.js
+++ b/js/misc/inputMethod.js
@@ -17,6 +17,7 @@ var InputMethod = new Lang.Class({
         this._currentFocus = null;
         this._preeditStr = '';
         this._preeditPos = 0;
+        this._preeditVisible = false;
         this._ibus = IBus.Bus.new_async();
         this._ibus.connect('connected', this._onConnected.bind(this));
         this._ibus.connect('disconnected', this._clear.bind(this));
@@ -80,6 +81,7 @@ var InputMethod = new Lang.Class({
         this._enabled = false;
         this._preeditStr = ''
         this._preeditPos = 0;
+        this._preeditVisible = false;
     },
 
     _emitRequestSurrounding() {
@@ -98,20 +100,27 @@ var InputMethod = new Lang.Class({
     _onUpdatePreeditText(context, text, pos, visible) {
         if (text == null)
             return;
-        this._preeditStr = text.get_text();
-        this._preeditPos = pos;
+
+        let preedit = text.get_text();
+
         if (visible)
-            this.set_preedit_text(this._preeditStr, pos);
-        else
+            this.set_preedit_text(preedit, pos);
+        else if (this._preeditVisible)
             this.set_preedit_text(null, pos);
+
+        this._preeditStr = preedit;
+        this._preeditPos = pos;
+        this._preeditVisible = visible;
     },
 
     _onShowPreeditText(context) {
+        this._preeditVisible = true;
         this.set_preedit_text(this._preeditStr, this._preeditPos);
     },
 
     _onHidePreeditText(context) {
         this.set_preedit_text(null, this._preeditPos);
+        this._preeditVisible = false;
     },
 
     _onForwardKeyEvent(context, keyval, keycode, state) {
-- 
2.18.1

++++++ gnome-shell-panel-Dont-allow-opening-hidden-menus.patch ++++++
>From 511e8c658445377b044c6dfb241709142c97a8ce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <[email protected]>
Date: Wed, 23 Jan 2019 23:55:12 +0100
Subject: [PATCH] panel: Don't allow opening hidden menus via keybindings

We shouldn't allow toggling menus that aren't supported by the
current session mode, but as indicators are hidden rather than
destroyed on mode switches, it is not enough to check for an
indicator's existence.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/851
---
 js/ui/panel.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/js/ui/panel.js b/js/ui/panel.js
index 66588f9c1..5b2ee63d8 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -998,8 +998,8 @@ var Panel = new Lang.Class({
     },
 
     _toggleMenu(indicator) {
-        if (!indicator) // menu not supported by current session mode
-            return;
+        if (!indicator || !indicator.container.visible)
+            return; // menu not supported by current session mode
 
         let menu = indicator.menu;
         if (!indicator.actor.reactive)
-- 
2.18.1



Reply via email to