editor: make autoscrolling optional

This commit is contained in:
Erik Faye-Lund 2010-04-26 21:26:51 +02:00
parent 6d9b923461
commit b5edcbe55d
2 changed files with 15 additions and 10 deletions

View File

@ -616,7 +616,7 @@ void TrackView::setEditRow(int newEditRow)
setScrollPos(scrollPosX, (editRow * rowHeight) - ((windowHeight - topMarginHeight) / 2) + rowHeight / 2); setScrollPos(scrollPosX, (editRow * rowHeight) - ((windowHeight - topMarginHeight) / 2) + rowHeight / 2);
} }
void TrackView::setEditTrack(int newEditTrack) void TrackView::setEditTrack(int newEditTrack, bool autoscroll)
{ {
if (0 == getTrackCount()) return; if (0 == getTrackCount()) return;
@ -646,14 +646,19 @@ void TrackView::setEditTrack(int newEditTrack)
invalidateTrack(oldEditTrack); invalidateTrack(oldEditTrack);
invalidateTrack(editTrack); invalidateTrack(editTrack);
int firstTrack = scrollPosX / trackWidth; if (autoscroll) {
int lastTrack = firstTrack + windowTracks; int firstTrack = scrollPosX / trackWidth;
int lastTrack = firstTrack + windowTracks;
int newFirstTrack = firstTrack;
if (editTrack >= lastTrack) newFirstTrack = editTrack - (lastTrack - firstTrack - 1); int newFirstTrack = firstTrack;
if (editTrack < firstTrack) newFirstTrack = editTrack; if (editTrack >= lastTrack)
setScrollPos(newFirstTrack * trackWidth, scrollPosY); newFirstTrack = editTrack - lastTrack + firstTrack + 1;
if (editTrack < firstTrack)
newFirstTrack = editTrack;
setScrollPos(newFirstTrack * trackWidth, scrollPosY);
} else
setupScrollBars();
} }
static int getScrollPos(HWND hwnd, int bar) static int getScrollPos(HWND hwnd, int bar)

View File

@ -51,7 +51,7 @@ public:
void setEditRow(int newEditRow); void setEditRow(int newEditRow);
int getEditRow() const { return editRow; } int getEditRow() const { return editRow; }
void setEditTrack(int newEditTrack); void setEditTrack(int newEditTrack, bool autoscroll = true);
int getEditTrack() const { return editTrack; } int getEditTrack() const { return editTrack; }
void selectAll() void selectAll()