NetworkMenu: fix some bugs for status items
When more than one device exists, we need to reset the section title's device to null, and in that case we must show nothing (neither the switch nor the label, but an empty label is OK anyway). Also, we need to update the device statusItem immediately when constructing it, as we may not get any state-changed. https://bugzilla.gnome.org/show_bug.cgi?id=646074
This commit is contained in:
parent
b2b685e46d
commit
2d855ce5cf
@ -200,7 +200,7 @@ NMDeviceTitleMenuItem.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
setStatus: function(text) {
|
setStatus: function(text) {
|
||||||
if (text) {
|
if (text != null) {
|
||||||
this._statusLabel.text = text;
|
this._statusLabel.text = text;
|
||||||
this._statusBin.child = this._statusLabel;
|
this._statusBin.child = this._statusLabel;
|
||||||
this.actor.reactive = false;
|
this.actor.reactive = false;
|
||||||
@ -367,6 +367,8 @@ NMDevice.prototype = {
|
|||||||
this.deactivate();
|
this.deactivate();
|
||||||
this.emit('enabled-changed');
|
this.emit('enabled-changed');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
this._updateStatusItem();
|
||||||
}
|
}
|
||||||
this.section = new PopupMenu.PopupMenuSection();
|
this.section = new PopupMenu.PopupMenuSection();
|
||||||
|
|
||||||
@ -383,10 +385,19 @@ NMDevice.prototype = {
|
|||||||
GObject.Object.prototype.disconnect.call(this.device, this._stateChangedId);
|
GObject.Object.prototype.disconnect.call(this.device, this._stateChangedId);
|
||||||
this._stateChangedId = 0;
|
this._stateChangedId = 0;
|
||||||
}
|
}
|
||||||
|
if (this._carrierChangedId) {
|
||||||
|
// see above for why this is needed
|
||||||
|
GObject.Object.prototype.disconnect.call(this.device, this._carrierChangedId);
|
||||||
|
this._carrierChangedId = 0;
|
||||||
|
}
|
||||||
|
if (this._firmwareChangedId) {
|
||||||
|
GObject.Object.prototype.disconnect.call(this.device, this._firmwareChangedId);
|
||||||
|
this._firmwareChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
this._clearSection();
|
this._clearSection();
|
||||||
if (this.titleItem)
|
if (this.statusItem)
|
||||||
this.titleItem.destroy();
|
this.statusItem.destroy();
|
||||||
this.section.destroy();
|
this.section.destroy();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -633,6 +644,14 @@ NMDevice.prototype = {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._updateStatusItem();
|
||||||
|
|
||||||
|
this._clearSection();
|
||||||
|
this._createSection();
|
||||||
|
this.emit('state-changed');
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateStatusItem: function() {
|
||||||
if (this._carrierChangedId) {
|
if (this._carrierChangedId) {
|
||||||
// see above for why this is needed
|
// see above for why this is needed
|
||||||
GObject.Object.prototype.disconnect.call(this.device, this._carrierChangedId);
|
GObject.Object.prototype.disconnect.call(this.device, this._carrierChangedId);
|
||||||
@ -645,10 +664,6 @@ NMDevice.prototype = {
|
|||||||
|
|
||||||
this.statusItem.setStatus(this.getStatusLabel());
|
this.statusItem.setStatus(this.getStatusLabel());
|
||||||
this.statusItem.setToggleState(this.connected);
|
this.statusItem.setToggleState(this.connected);
|
||||||
|
|
||||||
this._clearSection();
|
|
||||||
this._createSection();
|
|
||||||
this.emit('state-changed');
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_substateChanged: function() {
|
_substateChanged: function() {
|
||||||
@ -1666,6 +1681,8 @@ NMApplet.prototype = {
|
|||||||
managedDevices.forEach(function(dev) {
|
managedDevices.forEach(function(dev) {
|
||||||
dev.statusItem.actor.show();
|
dev.statusItem.actor.show();
|
||||||
});
|
});
|
||||||
|
// remove status text from the section title item
|
||||||
|
item.updateForDevice(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user