diff --git a/data/dbus-interfaces/org.gnome.Shell.Extensions.xml b/data/dbus-interfaces/org.gnome.Shell.Extensions.xml
index 309a9f207..61c898e3d 100644
--- a/data/dbus-interfaces/org.gnome.Shell.Extensions.xml
+++ b/data/dbus-interfaces/org.gnome.Shell.Extensions.xml
@@ -213,6 +213,15 @@
-->
+
+
+
+
+
+
diff --git a/js/extensionPrefs/main.js b/js/extensionPrefs/main.js
index d82dde426..be543a4ba 100644
--- a/js/extensionPrefs/main.js
+++ b/js/extensionPrefs/main.js
@@ -246,7 +246,7 @@ var Application = GObject.registerClass({
this._mainStack.add_named(new EmptyPlaceholder(), 'placeholder');
this._shellProxy = new GnomeShellProxy(Gio.DBus.session, 'org.gnome.Shell', '/org/gnome/Shell');
- this._shellProxy.connectSignal('ExtensionStatusChanged', (proxy, senderName, [uuid, state, error]) => {
+ this._shellProxy.connectSignal('ExtensionStateChanged', (proxy, senderName, [uuid, state]) => {
if (ExtensionUtils.extensions[uuid] !== undefined)
this._scanExtensions();
});
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
index 0b22783cc..84a79170b 100644
--- a/js/ui/extensionSystem.js
+++ b/js/ui/extensionSystem.js
@@ -159,15 +159,14 @@ var ExtensionManager = class {
let message = `${error}`;
+ extension.error = message;
extension.state = ExtensionState.ERROR;
if (!extension.errors)
extension.errors = [];
extension.errors.push(message);
log('Extension "%s" had error: %s'.format(uuid, message));
- this.emit('extension-state-changed', { uuid: uuid,
- error: message,
- state: extension.state });
+ this.emit('extension-state-changed', extension);
}
loadExtension(extension) {
diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js
index 64e80b42f..424aef567 100644
--- a/js/ui/shellDBus.js
+++ b/js/ui/shellDBus.js
@@ -320,6 +320,10 @@ var GnomeShellExtensions = class {
}
_extensionStateChanged(_, newState) {
+ let state = ExtensionUtils.serializeExtension(newState);
+ this._dbusImpl.emit_signal('ExtensionStateChanged',
+ new GLib.Variant('(sa{sv})', [newState.uuid, state]));
+
this._dbusImpl.emit_signal('ExtensionStatusChanged',
GLib.Variant.new('(sis)', [newState.uuid, newState.state, newState.error]));
}