From b0df35babf32afc5ba27b68d58df3127ae8ed6c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 3 Aug 2022 03:40:40 +0200 Subject: [PATCH] status/network: Add NMSection:checked property Unsurprisingly, this will become the quick toggles 'checked' state. Equally unsurprising, it is set when at least one item is active. Part-of: --- js/ui/status/network.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/js/ui/status/network.js b/js/ui/status/network.js index a3a8d8faa..20b44da1c 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -1275,6 +1275,11 @@ const NMVpnConnectionItem = GObject.registerClass({ }); const NMSection = GObject.registerClass({ + Properties: { + 'checked': GObject.ParamSpec.boolean('checked', '', '', + GObject.ParamFlags.READWRITE, + false), + }, Signals: { 'activation-failed': {}, 'icon-changed': {}, @@ -1322,6 +1327,11 @@ const NMSection = GObject.registerClass({ (item, i) => (item.visible = i < MAX_VISIBLE_NETWORKS)); } + _updateChecked() { + const [firstActive] = this._getActiveItems(); + this.checked = !!firstActive; + } + _resortItem(item) { const pos = this._itemSorter.upsert(item); this._itemsSection.moveMenuItem(item, pos); @@ -1332,6 +1342,7 @@ const NMSection = GObject.registerClass({ `${this} already has an item for ${key}`); item.connectObject( + 'notify::is-active', () => this._updateChecked(), 'notify::name', () => this._resortItem(item), 'destroy', () => this._removeItem(key), this); @@ -1357,6 +1368,7 @@ const NMSection = GObject.registerClass({ _sync() { this.visible = this._items.size > 0; this._updateItemsVisibility(); + this._updateChecked(); } });