static void onTrackSide(enum ArrowDirection dir, bool startOrEnd, enum Selection selection) { TrackViewInfo* viewInfo = getTrackViewInfo(); TrackData* trackData = getTrackData(); const int trackCount = getTrackCount(); const int oldTrack = getActiveTrack(); int track = 0; if (dir == ARROW_LEFT) track = startOrEnd ? 0 : getPrevTrack(); else track = startOrEnd ? trackCount - 1 : getNextTrack(); track = eclampi(track, 0, trackCount); setActiveTrack(track); if (selection == DO_SELECTION) { Track* t = &trackData->tracks[track]; // if this track has a folded group we can't select it so set back the selection to the old one if (t->group->folded) setActiveTrack(oldTrack); else { viewInfo->selectStopTrack = track; } } else { viewInfo->selectStartTrack = viewInfo->selectStopTrack = track; viewInfo->selectStartRow = viewInfo->selectStopRow = getRowPos(); } if (!TrackView_isSelectedTrackVisible(viewInfo, trackData, track)) { s_editorData.trackViewInfo.startPixel += TrackView_getTracksOffset(viewInfo, trackData, oldTrack, track); Editor_updateTrackScroll(); } }
void Audio::startPrevTrack() { startTrack(getPrevTrack()); }