summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-05-07 23:22:56 +0100
committerCarl Hetherington <cth@carlh.net>2013-05-07 23:22:56 +0100
commit2eb2945c58f3c0f7bfd49e218458710978777699 (patch)
tree6781f34e4ca3a6f4484061f01bf21a005e6c37f9 /src
parenteecad2ada9fe83ab90be735c2aa333dba73434b4 (diff)
Basic auto-scroll of job view (#129).
Diffstat (limited to 'src')
-rw-r--r--src/wx/job_manager_view.cc19
-rw-r--r--src/wx/job_manager_view.h1
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;