summaryrefslogtreecommitdiff
path: root/muse2/muse/undo.cpp
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2011-05-08 21:20:35 +0000
committerRobert Jonsson <spamatica@gmail.com>2011-05-08 21:20:35 +0000
commitc00e79dd68a68ab0ec30034612d3c8826107b8db (patch)
treeca92cbea4eacdf26eb8ac799075b3be7381467cc /muse2/muse/undo.cpp
parent27cc37410cf3d0994f105fbadf135e6a43a440eb (diff)
structure menu fixes
Diffstat (limited to 'muse2/muse/undo.cpp')
-rw-r--r--muse2/muse/undo.cpp30
1 files changed, 22 insertions, 8 deletions
diff --git a/muse2/muse/undo.cpp b/muse2/muse/undo.cpp
index 44d37591..a31b8e7a 100644
--- a/muse2/muse/undo.cpp
+++ b/muse2/muse/undo.cpp
@@ -897,10 +897,18 @@ void Song::doUndo3()
break;
case UndoOp::ModifyMarker:
{
- //printf("performing undo for one marker at %d\n", i->realMarker->tick());
- Marker tmpMarker = *i->realMarker;
- *i->realMarker = *i->copyMarker; // swap them
- *i->copyMarker = tmpMarker;
+ //printf("performing undo for one marker at copy %d real %d\n", i->copyMarker, i->realMarker);
+ if (i->realMarker) {
+ Marker tmpMarker = *i->realMarker;
+ *i->realMarker = *i->copyMarker; // swap them
+ *i->copyMarker = tmpMarker;
+ }
+ else {
+ //printf("flipping marker\n");
+ i->realMarker = _markerList->add(*i->copyMarker);
+ delete i->copyMarker;
+ i->copyMarker = 0;
+ }
}
break;
default:
@@ -979,10 +987,16 @@ void Song::doRedo3()
break;
case UndoOp::ModifyMarker:
{
- //printf("performing redo for one marker at %d\n", i->realMarker->tick());
- Marker tmpMarker = *i->realMarker;
- *i->realMarker = *i->copyMarker; // swap them
- *i->copyMarker = tmpMarker;
+ //printf("performing redo for one marker at copy %d real %d\n", i->copyMarker, i->realMarker);
+ if (i->copyMarker) {
+ Marker tmpMarker = *i->realMarker;
+ *i->realMarker = *i->copyMarker; // swap them
+ *i->copyMarker = tmpMarker;
+ } else {
+ i->copyMarker = new Marker(*i->realMarker);
+ _markerList->remove(i->realMarker);
+ i->realMarker = 0;
+ }
}
break;
default: