From 6c56de82ea82e476e17010f2d5e28674ab1217be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 15 Aug 2022 17:40:52 +0200 Subject: [PATCH] status/network: Stop using radio-mode for VPN items If a device has multiple connections set up, then at most one of those can be active at a time, which is why they are presented as radio items. In contrast, VPN connections are not mutually exclusive, each can be turned on or off independently. Setting :radio-mode on them currently means that VPN connections can be activated, but never disabled. So instead of abusing the :radio-mode property to give VPN items the UI we want, use regular items that reflect the desired behavior and explicitly set up the UI the way we want. Part-of: --- js/ui/status/network.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/js/ui/status/network.js b/js/ui/status/network.js index 7a191e03b..4cc9bbdd0 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -1249,27 +1249,22 @@ const NMVpnConnectionItem = GObject.registerClass({ super(section, connection); this._label.x_expand = true; - this.radioMode = true; + this.accessible_role = Atk.Role.CHECK_MENU_ITEM; + this._icon.hide(); this._switch = new PopupMenu.Switch(this.is_active); this.add_child(this._switch); - this.bind_property('radio-mode', - this._switch, 'visible', - GObject.BindingFlags.SYNC_CREATE); this.bind_property('is-active', this._switch, 'state', GObject.BindingFlags.SYNC_CREATE); - } - - _updateOrnament() { - this.setOrnament(PopupMenu.Ornament.NONE); + this.bind_property('name', + this._label, 'text', + GObject.BindingFlags.SYNC_CREATE); } _sync() { - super._sync(); - - if (this.radio_mode && this.is_active) + if (this.is_active) this.add_accessible_state(Atk.StateType.CHECKED); else this.remove_accessible_state(Atk.StateType.CHECKED);