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

View File

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