diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-05-07 23:22:56 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-05-07 23:22:56 +0100 |
| commit | 2eb2945c58f3c0f7bfd49e218458710978777699 (patch) | |
| tree | 6781f34e4ca3a6f4484061f01bf21a005e6c37f9 /src | |
| parent | eecad2ada9fe83ab90be735c2aa333dba73434b4 (diff) | |
Basic auto-scroll of job view (#129).
Diffstat (limited to 'src')
| -rw-r--r-- | src/wx/job_manager_view.cc | 19 | ||||
| -rw-r--r-- | src/wx/job_manager_view.h | 1 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/wx/job_manager_view.cc b/src/wx/job_manager_view.cc index a7788ddd0..c339d26bb 100644 --- a/src/wx/job_manager_view.cc +++ b/src/wx/job_manager_view.cc @@ -79,6 +79,7 @@ JobManagerView::update () JobRecord r; r.finalised = false; + r.scroll_nudged = false; r.gauge = new wxGauge (_panel, wxID_ANY, 100); _table->Insert (index + 1, r.gauge, 1, wxEXPAND | wxLEFT | wxRIGHT); @@ -95,6 +96,7 @@ JobManagerView::update () _table->Insert (index + 4, r.details, 1, wxALIGN_CENTER_VERTICAL | wxALL, 6); _job_records[*i] = r; + } string const st = (*i)->status (); @@ -108,8 +110,25 @@ JobManagerView::update () checked_set (_job_records[*i].message, wx_to_std (_("Running"))); _job_records[*i].gauge->Pulse (); } + } + if (!_job_records[*i].scroll_nudged && ((*i)->running () || (*i)->finished())) { + int x, y; + _job_records[*i].gauge->GetPosition (&x, &y); + int px, py; + GetScrollPixelsPerUnit (&px, &py); + int vx, vy; + GetViewStart (&vx, &vy); + int sx, sy; + GetClientSize (&sx, &sy); + + if (y > (vy * py + sy / 2)) { + Scroll (-1, y / py); + _job_records[*i].scroll_nudged = true; + } + } + if ((*i)->finished() && !_job_records[*i].finalised) { checked_set (_job_records[*i].message, st); if (!(*i)->finished_cancelled()) { diff --git a/src/wx/job_manager_view.h b/src/wx/job_manager_view.h index 72ac85c02..6343d78af 100644 --- a/src/wx/job_manager_view.h +++ b/src/wx/job_manager_view.h @@ -51,6 +51,7 @@ private: wxButton* cancel; wxButton* details; bool finalised; + bool scroll_nudged; }; std::map<boost::shared_ptr<Job>, JobRecord> _job_records; |
