From: Carl Hetherington Date: Mon, 14 Oct 2013 11:46:15 +0000 (+0100) Subject: Prevent crashes when coming out of the add screen dialog without giving a certificate. X-Git-Tag: v2.0.48~1285 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;ds=sidebyside;h=c439745bf1a1a38d0fc99ed18e2726730790973b;p=dcpomatic.git Prevent crashes when coming out of the add screen dialog without giving a certificate. --- diff --git a/ChangeLog b/ChangeLog index e870f50f0..f7532998c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-10-14 Carl Hetherington + + * Fix some crashes in the KDM dialogue when coming + out of the add screen without giving a certificate. + 2013-10-13 Carl Hetherington * Version 1.14 released. @@ -7,7 +12,7 @@ * Add some missing libraries to the OS X build. 2013-10-12 Carl Hetherington - + * Version 1.13 released. 2013-10-12 Carl Hetherington diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc index 6164f7fd9..02b91a1e2 100644 --- a/src/wx/kdm_dialog.cc +++ b/src/wx/kdm_dialog.cc @@ -276,7 +276,9 @@ KDMDialog::add_screen_clicked () shared_ptr c = selected_cinemas().front().second; ScreenDialog* d = new ScreenDialog (this, "Add Screen"); - d->ShowModal (); + if (d->ShowModal () != wxID_OK) { + return; + } shared_ptr s (new Screen (d->name(), d->certificate())); c->add_screen (s); diff --git a/src/wx/screen_dialog.cc b/src/wx/screen_dialog.cc index 6584e1ad6..32a0bce43 100644 --- a/src/wx/screen_dialog.cc +++ b/src/wx/screen_dialog.cc @@ -65,7 +65,9 @@ ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, shared_ overall_sizer->Layout (); overall_sizer->SetSizeHints (this); - _certificate_load->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (ScreenDialog::load_certificate), 0, this); + _certificate_load->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&ScreenDialog::load_certificate, this)); + + setup_sensitivity (); } string @@ -81,7 +83,7 @@ ScreenDialog::certificate () const } void -ScreenDialog::load_certificate (wxCommandEvent &) +ScreenDialog::load_certificate () { wxFileDialog* d = new wxFileDialog (this, _("Select Certificate File")); @@ -95,4 +97,13 @@ ScreenDialog::load_certificate (wxCommandEvent &) } d->Destroy (); + + setup_sensitivity (); +} + +void +ScreenDialog::setup_sensitivity () +{ + wxButton* ok = dynamic_cast (FindWindowById (wxID_OK, this)); + ok->Enable (_certificate); } diff --git a/src/wx/screen_dialog.h b/src/wx/screen_dialog.h index 1bd4a89a9..271ae2055 100644 --- a/src/wx/screen_dialog.h +++ b/src/wx/screen_dialog.h @@ -30,7 +30,8 @@ public: boost::shared_ptr certificate () const; private: - void load_certificate (wxCommandEvent &); + void load_certificate (); + void setup_sensitivity (); wxTextCtrl* _name; wxButton* _certificate_load;