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:
parent
085102be74
commit
6c56de82ea
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user