NetworkAgent: cancel requests when disabling component

When the NetworkAgent is disabled (for example because the lock screen
is being activated), cancel all modal dialogs.

https://bugzilla.gnome.org/show_bug.cgi?id=685239
This commit is contained in:
Giovanni Campagna 2012-10-22 23:13:45 +02:00
parent d1242e9ae7
commit 8ca914638e

View File

@ -408,7 +408,10 @@ const VPNRequestHandler = new Lang.Class({
} }
}, },
cancel: function() { cancel: function(respond) {
if (respond)
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED);
if (this._newStylePlugin && this._shellDialog) { if (this._newStylePlugin && this._shellDialog) {
this._shellDialog.close(global.get_current_time()); this._shellDialog.close(global.get_current_time());
this._shellDialog.destroy(); this._shellDialog.destroy();
@ -599,6 +602,16 @@ const NetworkAgent = new Lang.Class({
}, },
disable: function() { disable: function() {
let requestId;
for (requestId in this._dialogs)
this._dialogs[requestId].cancel();
this._dialogs = { };
for (requestId in this._vpnRequests)
this._vpnRequests[requestId].cancel(true);
this._vpnRequests = { };
this._native.unregister(); this._native.unregister();
}, },
@ -622,7 +635,7 @@ const NetworkAgent = new Lang.Class({
this._dialogs[requestId].destroy(); this._dialogs[requestId].destroy();
delete this._dialogs[requestId]; delete this._dialogs[requestId];
} else if (this._vpnRequests[requestId]) { } else if (this._vpnRequests[requestId]) {
this._vpnRequests[requestId].cancel(); this._vpnRequests[requestId].cancel(false);
delete this._vpnRequests[requestId]; delete this._vpnRequests[requestId];
} }
}, },