extensionSystem: Only add to extensionOrder array if enabling worked

Only push uuids of newly enabled extensions to the `_extensionOrder`
array if enabling them was successful.

Otherwise, since `_callExtensionDisable()` doesn't remove uuids that
weren't successfully enabled from the array, those extensions get added
to the array multiple times when they're disabled and enabled.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/96
This commit is contained in:
Jonas Dreßler 2019-09-09 16:07:32 +02:00 committed by Florian Müllner
parent 2a9e065cfb
commit 9698ff491a

View File

@ -111,8 +111,6 @@ var ExtensionManager = class {
if (extension.state != ExtensionState.DISABLED) if (extension.state != ExtensionState.DISABLED)
return; return;
this._extensionOrder.push(uuid);
let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css']; let stylesheetNames = [`${global.session_mode}.css`, 'stylesheet.css'];
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme(); let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
for (let i = 0; i < stylesheetNames.length; i++) { for (let i = 0; i < stylesheetNames.length; i++) {
@ -132,6 +130,7 @@ var ExtensionManager = class {
try { try {
extension.stateObj.enable(); extension.stateObj.enable();
extension.state = ExtensionState.ENABLED; extension.state = ExtensionState.ENABLED;
this._extensionOrder.push(uuid);
this.emit('extension-state-changed', extension); this.emit('extension-state-changed', extension);
} catch (e) { } catch (e) {
if (extension.stylesheet) { if (extension.stylesheet) {