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>
This commit is contained in:
Florian Müllner 2022-08-15 17:40:52 +02:00 committed by Marge Bot
parent 085102be74
commit 6c56de82ea

View File

@ -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);