- Add gnome-shell-hidepassword.patch: authPrompt: propagate gdm "reset" signal after user switching. Fixed GDM showing showing passwords on user switching (bnc#852490, bgo#710456). - Add gnome-shell-extensions-disabling.patch: catch more errors on extensions enable() and disable(). Fixes gnome-shell extensions disabled on screen unlock (bnc#852527, bgo#688331, bgo#719378). - Add gnome-shell-tray-reentrant.patch: messageTray: Prevent reentrancy issues in _updateState (bgo#711694). OBS-URL: https://build.opensuse.org/request/show/208896 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-shell?expand=0&rev=196
158 lines
4.7 KiB
Diff
158 lines
4.7 KiB
Diff
From 2c538d247b4bec36ff921ec057572da2487cd9e4 Mon Sep 17 00:00:00 2001
|
|
From: Sebastien Lafargue <slaf66@gmail.com>
|
|
Date: Fri, 25 Oct 2013 13:28:11 +0000
|
|
Subject: catch more errors on extensions enable() and disable()
|
|
|
|
https://bugzilla.gnome.org/show_bug.cgi?id=688331
|
|
---
|
|
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
|
|
index a929451..dde7b82 100644
|
|
--- a/js/ui/extensionSystem.js
|
|
+++ b/js/ui/extensionSystem.js
|
|
@@ -76,7 +76,11 @@ function disableExtension(uuid) {
|
|
theme.unload_stylesheet(extension.stylesheet.get_path());
|
|
}
|
|
|
|
- extension.stateObj.disable();
|
|
+ try {
|
|
+ extension.stateObj.disable();
|
|
+ } catch(e) {
|
|
+ logExtensionError(uuid, e);
|
|
+ }
|
|
|
|
for (let i = 0; i < order.length; i++) {
|
|
let uuid = order[i];
|
|
@@ -89,8 +93,10 @@ function disableExtension(uuid) {
|
|
|
|
extensionOrder.splice(orderIdx, 1);
|
|
|
|
- extension.state = ExtensionState.DISABLED;
|
|
- _signals.emit('extension-state-changed', extension);
|
|
+ if ( extension.state != ExtensionState.ERROR ) {
|
|
+ extension.state = ExtensionState.DISABLED;
|
|
+ _signals.emit('extension-state-changed', extension);
|
|
+ }
|
|
}
|
|
|
|
function enableExtension(uuid) {
|
|
@@ -117,10 +123,15 @@ function enableExtension(uuid) {
|
|
}
|
|
}
|
|
|
|
- extension.stateObj.enable();
|
|
-
|
|
- extension.state = ExtensionState.ENABLED;
|
|
- _signals.emit('extension-state-changed', extension);
|
|
+ try {
|
|
+ extension.stateObj.enable();
|
|
+ extension.state = ExtensionState.ENABLED;
|
|
+ _signals.emit('extension-state-changed', extension);
|
|
+ return;
|
|
+ } catch(e) {
|
|
+ logExtensionError(uuid, e);
|
|
+ return;
|
|
+ }
|
|
}
|
|
|
|
function logExtensionError(uuid, error) {
|
|
@@ -150,7 +161,8 @@ function loadExtension(extension) {
|
|
} else {
|
|
let enabled = enabledExtensions.indexOf(extension.uuid) != -1;
|
|
if (enabled) {
|
|
- initExtension(extension.uuid);
|
|
+ if (!initExtension(extension.uuid))
|
|
+ return;
|
|
if (extension.state == ExtensionState.DISABLED)
|
|
enableExtension(extension.uuid);
|
|
} else {
|
|
@@ -205,7 +217,12 @@ function initExtension(uuid) {
|
|
extensionModule = extension.imports.extension;
|
|
|
|
if (extensionModule.init) {
|
|
- extensionState = extensionModule.init(extension);
|
|
+ try {
|
|
+ extensionState = extensionModule.init(extension);
|
|
+ } catch(e) {
|
|
+ logExtensionError(uuid, e);
|
|
+ return false;
|
|
+ }
|
|
}
|
|
|
|
if (!extensionState)
|
|
@@ -214,6 +231,7 @@ function initExtension(uuid) {
|
|
|
|
extension.state = ExtensionState.DISABLED;
|
|
_signals.emit('extension-loaded', uuid);
|
|
+ return true;
|
|
}
|
|
|
|
function getEnabledExtensions() {
|
|
@@ -235,11 +253,7 @@ function onEnabledExtensionsChanged() {
|
|
newEnabledExtensions.filter(function(uuid) {
|
|
return enabledExtensions.indexOf(uuid) == -1;
|
|
}).forEach(function(uuid) {
|
|
- try {
|
|
enableExtension(uuid);
|
|
- } catch(e) {
|
|
- logExtensionError(uuid, e);
|
|
- }
|
|
});
|
|
|
|
// Find and disable all the newly disabled extensions: UUIDs found in the
|
|
@@ -247,11 +261,7 @@ function onEnabledExtensionsChanged() {
|
|
enabledExtensions.filter(function(item) {
|
|
return newEnabledExtensions.indexOf(item) == -1;
|
|
}).forEach(function(uuid) {
|
|
- try {
|
|
disableExtension(uuid);
|
|
- } catch(e) {
|
|
- logExtensionError(uuid, e);
|
|
- }
|
|
});
|
|
|
|
enabledExtensions = newEnabledExtensions;
|
|
@@ -263,11 +273,7 @@ function _loadExtensions() {
|
|
|
|
let finder = new ExtensionUtils.ExtensionFinder();
|
|
finder.connect('extension-found', function(signals, extension) {
|
|
- try {
|
|
- loadExtension(extension);
|
|
- } catch(e) {
|
|
- logExtensionError(extension.uuid, e);
|
|
- }
|
|
+ loadExtension(extension);
|
|
});
|
|
finder.scanExtensions();
|
|
}
|
|
--
|
|
cgit v0.9.2
|
|
|
|
From 621e3d0df8abbf9c74df9f9c0cff3010bba5be82 Mon Sep 17 00:00:00 2001
|
|
From: Florian Mü <fmuellner@gnome.org>
|
|
Date: Tue, 26 Nov 2013 19:52:24 +0000
|
|
Subject: loginDialog: Implement cancel()
|
|
|
|
The screen shield expects a cancel() method on the unlockDialog
|
|
implementation, but LoginDialog does not provide it currently.
|
|
|
|
https://bugzilla.gnome.org/show_bug.cgi?id=719378
|
|
---
|
|
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
|
|
index eb94554..fb3cf70 100644
|
|
--- a/js/gdm/loginDialog.js
|
|
+++ b/js/gdm/loginDialog.js
|
|
@@ -907,6 +907,10 @@ const LoginDialog = new Lang.Class({
|
|
Main.ctrlAltTabManager.removeGroup(this.dialogLayout);
|
|
},
|
|
|
|
+ cancel: function() {
|
|
+ this._authPrompt.cancel();
|
|
+ },
|
|
+
|
|
addCharacter: function(unichar) {
|
|
this._authPrompt.addCharacter(unichar);
|
|
},
|
|
--
|
|
cgit v0.9.2
|
|
|