Fix crash on cancelling the download certificate dialogue.
authorCarl Hetherington <cth@carlh.net>
Thu, 26 Nov 2015 09:25:49 +0000 (09:25 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 26 Nov 2015 09:25:49 +0000 (09:25 +0000)
src/wx/download_certificate_dialog.cc
src/wx/download_certificate_dialog.h

index 31f6a7b6aa7c4cf5d0d5700183b1ee7cebaf6155..8b51edc169dae68648e521ae5b6a99df7813eead 100644 (file)
@@ -56,11 +56,17 @@ DownloadCertificateDialog::DownloadCertificateDialog (wxWindow* parent)
 
        SetSizerAndFit (sizer);
 
-       _notebook->Bind (wxEVT_NOTEBOOK_PAGE_CHANGED, boost::bind (&DownloadCertificateDialog::page_changed, this));
+       _notebook->Bind (wxEVT_NOTEBOOK_PAGE_CHANGED, &DownloadCertificateDialog::page_changed, this);
        _download->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DownloadCertificateDialog::download, this));
        _download->Enable (false);
 
-       page_changed ();
+       wxNotebookEvent ev;
+       page_changed (ev);
+}
+
+DownloadCertificateDialog::~DownloadCertificateDialog ()
+{
+       _notebook->Unbind (wxEVT_NOTEBOOK_PAGE_CHANGED, &DownloadCertificateDialog::page_changed, this);
 }
 
 void
@@ -90,7 +96,7 @@ DownloadCertificateDialog::setup_sensitivity ()
 }
 
 void
-DownloadCertificateDialog::page_changed ()
+DownloadCertificateDialog::page_changed (wxNotebookEvent &)
 {
        int const n = _notebook->GetSelection();
        if (!_setup[n]) {
index 7d319dcfe5e64f26f9ebca8e6e5afdf57addecca..97d7d17ff205eb339534272775607543c3376433 100644 (file)
@@ -26,6 +26,7 @@ class DownloadCertificateDialog : public wxDialog
 {
 public:
        DownloadCertificateDialog (wxWindow* parent);
+       ~DownloadCertificateDialog ();
 
        dcp::Certificate certificate () const;
 
@@ -33,7 +34,7 @@ public:
 
 private:
        void download ();
-       void page_changed ();
+       void page_changed (wxNotebookEvent &);
 
        wxNotebook* _notebook;
        std::vector<DownloadCertificatePanel*> _pages;