network: Don't assume the active connection has been processed first
`NMConnectionDevice._sync()` is responsible for setting up the active connection that we'll end up displaying. It expects the active connection to already be in a map `_connectionItems`. If it isn't in there, we get a null dereference and the indicator can get into a weird state where it doesn't display devices / connections properly. Let's change this expectation. If there is an active connection, `_deviceAdded()` will eventually get to it and call `_sync()` to set up the active connection state. We make `_sync()` tolerate there being no active connection when it's called. Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/140
This commit is contained in:
parent
72f5802be9
commit
5d61e2563d
@ -420,14 +420,16 @@ var NMConnectionDevice = new Lang.Class({
|
|||||||
this._deactivateItem.actor.visible = this._device.state > NM.DeviceState.DISCONNECTED;
|
this._deactivateItem.actor.visible = this._device.state > NM.DeviceState.DISCONNECTED;
|
||||||
|
|
||||||
if (this._activeConnection == null) {
|
if (this._activeConnection == null) {
|
||||||
this._activeConnection = this._device.active_connection;
|
let activeConnection = this._device.active_connection;
|
||||||
|
if (activeConnection && activeConnection.connection) {
|
||||||
if (this._activeConnection) {
|
let item = this._connectionItems.get(activeConnection.connection.get_uuid());
|
||||||
|
if (item) {
|
||||||
|
this._activeConnection = activeConnection;
|
||||||
ensureActiveConnectionProps(this._activeConnection, this._client);
|
ensureActiveConnectionProps(this._activeConnection, this._client);
|
||||||
let item = this._connectionItems.get(this._activeConnection.connection.get_uuid());
|
|
||||||
item.setActiveConnection(this._activeConnection);
|
item.setActiveConnection(this._activeConnection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.parent();
|
this.parent();
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user