diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-02-06 10:37:31 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-02-06 13:23:54 +0000 |
| commit | 80f6d818e43d3ce2bd2d81f1bd3bbd4160c28aea (patch) | |
| tree | 93a13d96ca599e44ae32eb598a56c772643d9e00 | |
| parent | d1711d4d91322c8559a1adbe53434a25b17b4f7e (diff) | |
Fix display of progress meter (and crash) when sending emails from the KDM
creator (#1045).
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | src/wx/job_view.cc | 3 | ||||
| -rw-r--r-- | src/wx/job_view_dialog.cc | 15 | ||||
| -rw-r--r-- | src/wx/job_view_dialog.h | 2 |
4 files changed, 24 insertions, 1 deletions
@@ -1,3 +1,8 @@ +2017-02-06 Carl Hetherington <cth@carlh.net> + + * Fix display of progress meter (and crash) when sending emails + from the KDM creator (#1045). + 2017-01-28 Carl Hetherington <cth@carlh.net> * Add priority control buttons to batch converter (#961). diff --git a/src/wx/job_view.cc b/src/wx/job_view.cc index 13c3bc7ab..4aa2e3c2b 100644 --- a/src/wx/job_view.cc +++ b/src/wx/job_view.cc @@ -33,6 +33,7 @@ JobView::JobView (shared_ptr<Job> job, wxWindow* parent, wxWindow* container, wx , _table (table) , _parent (parent) , _container (container) + , _gauge (0) { } @@ -78,7 +79,7 @@ JobView::setup () void JobView::maybe_pulse () { - if (_job->running() && !_job->progress ()) { + if (_gauge && _job->running() && !_job->progress()) { _gauge->Pulse (); } } diff --git a/src/wx/job_view_dialog.cc b/src/wx/job_view_dialog.cc index c1c1c0c55..a49818cc8 100644 --- a/src/wx/job_view_dialog.cc +++ b/src/wx/job_view_dialog.cc @@ -20,19 +20,28 @@ #include "job_view_dialog.h" #include "normal_job_view.h" +#include "lib/job.h" using boost::shared_ptr; JobViewDialog::JobViewDialog (wxWindow* parent, wxString title, shared_ptr<Job> job) : TableDialog (parent, title, 4, 0, false) + , _job (job) { _view = new NormalJobView (job, this, this, _table); + _view->setup (); layout (); SetMinSize (wxSize (960, -1)); Bind (wxEVT_TIMER, boost::bind (&JobViewDialog::periodic, this)); _timer.reset (new wxTimer (this)); _timer->Start (1000); + + /* Start off with OK disabled and it will be enabled when the job is finished */ + wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this)); + if (ok) { + ok->Enable (false); + } } JobViewDialog::~JobViewDialog () @@ -44,4 +53,10 @@ void JobViewDialog::periodic () { _view->maybe_pulse (); + + shared_ptr<Job> job = _job.lock (); + wxButton* ok = dynamic_cast<wxButton *> (FindWindowById (wxID_OK, this)); + if (job && ok) { + ok->Enable (job->finished ()); + } } diff --git a/src/wx/job_view_dialog.h b/src/wx/job_view_dialog.h index ae22aba73..54a6c1636 100644 --- a/src/wx/job_view_dialog.h +++ b/src/wx/job_view_dialog.h @@ -20,6 +20,7 @@ #include "table_dialog.h" #include <boost/shared_ptr.hpp> +#include <boost/weak_ptr.hpp> class JobView; class Job; @@ -34,5 +35,6 @@ private: void periodic (); JobView* _view; + boost::weak_ptr<Job> _job; boost::shared_ptr<wxTimer> _timer; }; |
