status/network: Add activate() to NMDeviceItem
DeviceItems are sections, and therefore not actually activatable. However when we port to quick settings, those toggles will need to do *something*. For that reason, provide an activate() implementation that 1. deactivates the device if currently connected 2. delegates the action to the most-recently used item, the first visible item or the auto-connect item (in that order) Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2408>
This commit is contained in:
parent
2231fce157
commit
be98e5b314
@ -499,6 +499,29 @@ const NMDeviceItem = GObject.registerClass({
|
||||
this._addConnection(conn);
|
||||
}
|
||||
|
||||
_getActivatableItem() {
|
||||
const [lastUsed] = this._itemSorter.itemsByMru();
|
||||
if (lastUsed?.timestamp > 0)
|
||||
return lastUsed;
|
||||
|
||||
const [firstItem] = this._itemSorter;
|
||||
if (firstItem)
|
||||
return firstItem;
|
||||
|
||||
console.assert(this._autoConnectItem.visible,
|
||||
`${this}'s autoConnect item should be visible when otherwise empty`);
|
||||
return this._autoConnectItem;
|
||||
}
|
||||
|
||||
activate() {
|
||||
super.activate();
|
||||
|
||||
if (this._activeConnection)
|
||||
this.deactivateConnection();
|
||||
else
|
||||
this._getActivatableItem()?.activate();
|
||||
}
|
||||
|
||||
activateConnection(connection) {
|
||||
this._client.activate_connection_async(connection, this._device, null, null, null);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user