summaryrefslogtreecommitdiff
path: root/muse2/muse/song.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/song.cpp')
-rw-r--r--muse2/muse/song.cpp29
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