diff options
Diffstat (limited to 'muse2/muse/song.cpp')
-rw-r--r-- | muse2/muse/song.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/muse2/muse/song.cpp b/muse2/muse/song.cpp index 3c5b8fa7..5d821301 100644 --- a/muse2/muse/song.cpp +++ b/muse2/muse/song.cpp @@ -1062,16 +1062,29 @@ void Song::setStopPlay(bool f) } //--------------------------------------------------------- -// swapTracks +// moveTrack +// //--------------------------------------------------------- -void Song::swapTracks(int i1, int i2) - { - addUndo(UndoOp(UndoOp::SwapTrack, i1, i2)); - Track* track = _tracks[i1]; - _tracks[i1] = _tracks[i2]; - _tracks[i2] = track; - } +void Song::moveTrack(int fromI, int toI) +{ + //addUndo(UndoOp(UndoOp::MoveTrack, fromI, toI)); + Track* toTrack = _tracks[toI]; + Track* fromTrack = _tracks[fromI]; + for(TrackList::iterator toIt = _tracks.begin(); toIt != _tracks.end(); ++toIt) + { + if ((*toIt) == toTrack) { + for(TrackList::iterator fromIt = _tracks.begin(); fromIt != _tracks.end(); ++fromIt) + { + if ((*fromIt) == fromTrack) { + _tracks.erase(fromIt); + _tracks.insert(toIt,fromTrack); + } + } + + } + } +} //--------------------------------------------------------- // seekTo |