[gnome-shell] status/network: Stop using radio-mode for VPN items



commit 6c56de82ea82e476e17010f2d5e28674ab1217be
Author: Florian Müllner <fmuellner gnome org>
Date:   Mon Aug 15 17:40:52 2022 +0200

    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: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2426>

 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 7a191e03bd..4cc9bbdd02 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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]