NetworkMenu/NMConnectionDevice: grab the connection before using it
If the active connection for the device is not the primary or activating globally, it won't have the _connection and _primaryDevice expando properties, so grab them from the settings object. https://bugzilla.gnome.org/show_bug.cgi?id=709043
This commit is contained in:
parent
843f076225
commit
e898e29910
@ -73,6 +73,16 @@ function ssidToLabel(ssid) {
|
|||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ensureActiveConnectionProps(active, settings) {
|
||||||
|
if (!active._connection) {
|
||||||
|
active._connection = settings.get_connection_by_path(active.connection);
|
||||||
|
|
||||||
|
// This list is guaranteed to have only one device in it.
|
||||||
|
let device = active.get_devices()[0]._delegate;
|
||||||
|
active._primaryDevice = device;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const NMConnectionItem = new Lang.Class({
|
const NMConnectionItem = new Lang.Class({
|
||||||
Name: 'NMConnectionItem',
|
Name: 'NMConnectionItem',
|
||||||
|
|
||||||
@ -267,9 +277,10 @@ const NMConnectionDevice = new Lang.Class({
|
|||||||
Extends: NMConnectionSection,
|
Extends: NMConnectionSection,
|
||||||
Abstract: true,
|
Abstract: true,
|
||||||
|
|
||||||
_init: function(client, device) {
|
_init: function(client, device, settings) {
|
||||||
this.parent(client);
|
this.parent(client);
|
||||||
this._device = device;
|
this._device = device;
|
||||||
|
this._settings = settings;
|
||||||
|
|
||||||
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
|
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
|
||||||
this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
|
this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
|
||||||
@ -300,6 +311,7 @@ const NMConnectionDevice = new Lang.Class({
|
|||||||
this._activeConnection = this._device.active_connection;
|
this._activeConnection = this._device.active_connection;
|
||||||
|
|
||||||
if (this._activeConnection) {
|
if (this._activeConnection) {
|
||||||
|
ensureActiveConnectionProps(this._activeConnection, this._settings);
|
||||||
let item = this._connectionItems.get(this._activeConnection._connection.get_uuid());
|
let item = this._connectionItems.get(this._activeConnection._connection.get_uuid());
|
||||||
item.setActiveConnection(this._activeConnection);
|
item.setActiveConnection(this._activeConnection);
|
||||||
}
|
}
|
||||||
@ -398,8 +410,8 @@ const NMDeviceModem = new Lang.Class({
|
|||||||
Extends: NMConnectionDevice,
|
Extends: NMConnectionDevice,
|
||||||
category: NMConnectionCategory.WWAN,
|
category: NMConnectionCategory.WWAN,
|
||||||
|
|
||||||
_init: function(client, device) {
|
_init: function(client, device, settings) {
|
||||||
this.parent(client, device);
|
this.parent(client, device, settings);
|
||||||
this._mobileDevice = null;
|
this._mobileDevice = null;
|
||||||
|
|
||||||
let capabilities = device.current_capabilities;
|
let capabilities = device.current_capabilities;
|
||||||
@ -1425,28 +1437,18 @@ const NMApplet = new Lang.Class({
|
|||||||
devices.splice(pos, 1);
|
devices.splice(pos, 1);
|
||||||
},
|
},
|
||||||
|
|
||||||
_ensureActiveConnectionProps: function(a) {
|
|
||||||
if (!a._connection) {
|
|
||||||
a._connection = this._settings.get_connection_by_path(a.connection);
|
|
||||||
|
|
||||||
// This list is guaranteed to have only one device in it.
|
|
||||||
let device = a.get_devices()[0]._delegate;
|
|
||||||
a._primaryDevice = device;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_getMainConnection: function() {
|
_getMainConnection: function() {
|
||||||
let connection;
|
let connection;
|
||||||
|
|
||||||
connection = this._client.get_primary_connection();
|
connection = this._client.get_primary_connection();
|
||||||
if (connection) {
|
if (connection) {
|
||||||
this._ensureActiveConnectionProps(connection);
|
ensureActiveConnectionProps(connection, this._settings);
|
||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
connection = this._client.get_activating_connection();
|
connection = this._client.get_activating_connection();
|
||||||
if (connection) {
|
if (connection) {
|
||||||
this._ensureActiveConnectionProps(connection);
|
ensureActiveConnectionProps(connection, this._settings);
|
||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user