[gnome-shell] NetworkMenu: fix VPN connection state
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] NetworkMenu: fix VPN connection state
- Date: Sat, 2 Apr 2011 18:40:37 +0000 (UTC)
commit d1a110d4ca5e6f0c518edeae3cf2eb7856e164cf
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Thu Mar 31 22:43:05 2011 +0200
NetworkMenu: fix VPN connection state
It was always reporting true, even if disconnected. At the same time,
add a signal that is emitted when state changes and update the UI
accordingly.
In the future (with another libnm-glib API break) we should use the
NMVPNConnection object to track the connection state, so that we can
show if we're connecting or we need authentication.
https://bugzilla.gnome.org/show_bug.cgi?id=646380
js/ui/status/network.js | 16 +++++++++++++++-
1 files changed, 15 insertions(+), 1 deletions(-)
---
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index ffcab09..7616542 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -254,6 +254,11 @@ NMWiredSectionTitleMenuItem.prototype = {
return;
}
+ // Immediately reset the switch to false, it will be updated appropriately
+ // by state-changed signals in devices (but fixes the VPN not being in sync
+ // if the ActiveConnection object is never seen by libnm-glib)
+ this._switch.setToggleState(false);
+
if (this._switch.state)
this._device.activate();
else
@@ -940,7 +945,13 @@ NMDeviceVPN.prototype = {
},
get connected() {
- return true;
+ return !!this._activeConnection;
+ },
+
+ setActiveConnection: function(activeConnection) {
+ NMDevice.prototype.setActiveConnection.call(this, activeConnection);
+
+ this.emit('active-connection-changed');
},
_shouldShowConnectionList: function() {
@@ -1539,6 +1550,9 @@ NMApplet.prototype = {
device: new NMDeviceVPN(this._client),
item: new NMWiredSectionTitleMenuItem(_("VPN Connections"))
};
+ this._devices.vpn.device.connect('active-connection-changed', Lang.bind(this, function() {
+ this._devices.vpn.item.updateForDevice(this._devices.vpn.device);
+ }));
this._devices.vpn.item.updateForDevice(this._devices.vpn.device);
this._devices.vpn.section.addMenuItem(this._devices.vpn.item);
this._devices.vpn.section.addMenuItem(this._devices.vpn.device.section);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]