[gnome-shell] status/network: Add activate() to NMDeviceItem
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] status/network: Add activate() to NMDeviceItem
- Date: Wed, 10 Aug 2022 16:41:15 +0000 (UTC)
commit be98e5b3143caf6a140f6478c3776b18fdf131f7
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Aug 3 06:44:36 2022 +0200
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>
js/ui/status/network.js | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
---
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index 39a89e93d2..1beab28c1f 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -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);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]