diff options
author | Ivan Alejandro <ivanalejandro0@gmail.com> | 2014-01-06 18:35:51 -0300 |
---|---|---|
committer | Ivan Alejandro <ivanalejandro0@gmail.com> | 2014-01-06 18:35:51 -0300 |
commit | 5e3adedc6c4de23fe8ef5ee99f3c88977c420329 (patch) | |
tree | 25101ba3c59b047e645d54536d2659ef525751c7 | |
parent | 61e7c5bb403ba652994b54dcea3d3bc169ef23ec (diff) |
Disconnect signals before closing the wizard.
[Closes #4817]
-rw-r--r-- | changes/bug-4817_disconnect-signals-on-wizard-close | 1 | ||||
-rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 5 | ||||
-rw-r--r-- | src/leap/bitmask/gui/wizard.py | 23 |
3 files changed, 27 insertions, 2 deletions
diff --git a/changes/bug-4817_disconnect-signals-on-wizard-close b/changes/bug-4817_disconnect-signals-on-wizard-close new file mode 100644 index 00000000..78c14756 --- /dev/null +++ b/changes/bug-4817_disconnect-signals-on-wizard-close @@ -0,0 +1 @@ +- Disconnect signals before closing the wizard. Closes #4817. diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index c05d65fe..1fe2cfca 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -414,7 +414,8 @@ class MainWindow(QtGui.QMainWindow): # setup but does not register self._wizard = None self._backend_connect() - self._finish_init() + if self._wizard_firstrun: + self._finish_init() def _launch_wizard(self): """ @@ -433,7 +434,7 @@ class MainWindow(QtGui.QMainWindow): self._wizard = Wizard(backend=self._backend, bypass_checks=self._bypass_checks) self._wizard.accepted.connect(self._finish_init) - self._wizard.rejected.connect(self._wizard.close) + self._wizard.rejected.connect(self._rejected_wizard) self.setVisible(False) # Do NOT use exec_, it will use a child event loop! diff --git a/src/leap/bitmask/gui/wizard.py b/src/leap/bitmask/gui/wizard.py index ec007110..b99e8db6 100644 --- a/src/leap/bitmask/gui/wizard.py +++ b/src/leap/bitmask/gui/wizard.py @@ -686,3 +686,26 @@ class Wizard(QtGui.QWizard): self.ui.lblUser.setText("") self.ui.lblPassword.setText("") self.ui.lblPassword2.setText("") + + def closeEvent(self, event): + """ + This method is called when the wizard dialog is closed. + We disconnect all the backend signals in here. + """ + try: + # disconnect backend signals + self._backend.signaler.prov_name_resolution.disconnect( + self._name_resolution) + self._backend.signaler.prov_https_connection.disconnect( + self._https_connection) + self._backend.signaler.prov_download_provider_info.disconnect( + self._download_provider_info) + + self._backend.signaler.prov_download_ca_cert.disconnect( + self._download_ca_cert) + self._backend.signaler.prov_check_ca_fingerprint.disconnect( + self._check_ca_fingerprint) + self._backend.signaler.prov_check_api_certificate.disconnect( + self._check_api_certificate) + except RuntimeError: + pass # Signal was not connected |