From ded451f3342b84a277cbb624f062868980d59be8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 3 Aug 2022 04:11:15 +0200 Subject: [PATCH] status/network: Use bindings to update VPN indicator Now that the VPN section is a GObject, we can set up proper bindings for icon-name and visibility. Part-of: --- js/ui/status/network.js | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/js/ui/status/network.js b/js/ui/status/network.js index 5212698e0..e9ea5c05e 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -1528,14 +1528,6 @@ class NMVpnSection extends NMSection { deactivateConnection(activeConnection) { this._client.deactivate_connection(activeConnection, null); } - - getIndicatorIcon() { - for (const item of this._items.values()) { - if (item.is_active) - return item.icon_name; - } - return ''; - } }); const NMDeviceSection = GObject.registerClass( @@ -1746,9 +1738,6 @@ class Indicator extends PanelMenu.SystemIndicator { _init() { super._init(); - this._primaryIndicator = this._addIndicator(); - this._vpnIndicator = this._addIndicator(); - this._connectivityQueue = new Set(); this._mainConnection = null; @@ -1780,6 +1769,16 @@ class Indicator extends PanelMenu.SystemIndicator { this.menu.addMenuItem(section.menu); }); + this._primaryIndicator = this._addIndicator(); + this._vpnIndicator = this._addIndicator(); + + this._vpnSection.bind_property('checked', + this._vpnIndicator, 'visible', + GObject.BindingFlags.SYNC_CREATE); + this._vpnSection.bind_property('icon-name', + this._vpnIndicator, 'icon-name', + GObject.BindingFlags.SYNC_CREATE); + this._getClient().catch(logError); } @@ -1983,8 +1982,5 @@ class Indicator extends PanelMenu.SystemIndicator { this._primaryIndicator.icon_name = 'network-wired-no-route-symbolic'; } } - - this._vpnIndicator.icon_name = this._vpnSection.getIndicatorIcon(); - this._vpnIndicator.visible = this._vpnIndicator.icon_name !== null; } });