diff --git a/js/ui/status/network.js b/js/ui/status/network.js index da2808cdb..85b40110e 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -376,6 +376,14 @@ const NMDevice = new Lang.Class({ // in the majority of cases (wired, wwan) }, + _firmwareChanged: function() { + if (this._firmwareChangedId) { + GObject.Object.prototype.disconnect.call(this._device, this._firmwareChangedId); + this._firmwareChangedId = 0; + } + this._substateChanged(); + }, + getStatusLabel: function() { if (!this._device) return null; @@ -403,9 +411,10 @@ const NMDevice = new Lang.Class({ // This state is actually a compound of various states (generically unavailable, // firmware missing), that are exposed by different properties (whose state may // or may not updated when we receive state-changed). - if (!this._firmwareChangedId) - this._firmwareChangedId = this._device.connect('notify::firmware-missing', Lang.bind(this, this._substateChanged)); if (this._device.firmware_missing) { + if (!this._firmwareChangedId) + this._firmwareChangedId = this._device.connect('notify::firmware-missing', Lang.bind(this, this._firmwareChanged)); + /* Translators: this is for devices that require some kind of firmware or kernel module, which is missing */ return _("firmware missing"); @@ -522,11 +531,6 @@ const NMDevice = new Lang.Class({ }, _updateStatusItem: function() { - if (this._firmwareChangedId) { - GObject.Object.prototype.disconnect.call(this._device, this._firmwareChangedId); - this._firmwareChangedId = 0; - } - this.statusItem.setStatus(this.getStatusLabel()); this.statusItem.setToggleState(this.connected); },