From 2f26bcd6a94124721d8c946f55d3f360147f1f58 Mon Sep 17 00:00:00 2001 From: Florian Jung Date: Sun, 1 Sep 2013 11:55:38 +0200 Subject: applyOperationGroup is no more a hack :) --- muse2/muse/song.cpp | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) (limited to 'muse2/muse/song.cpp') diff --git a/muse2/muse/song.cpp b/muse2/muse/song.cpp index 3cf1960d..e18dfc01 100644 --- a/muse2/muse/song.cpp +++ b/muse2/muse/song.cpp @@ -1756,10 +1756,16 @@ void Song::endMsgCmd() void Song::undo() { updateFlags = 0; - if (doUndo1()) + + Undo& opGroup = undoList->back(); + + if (opGroup.empty()) return; - MusEGlobal::audio->msgUndo(); - doUndo3(); + + MusEGlobal::audio->msgRevertOperationGroup(opGroup); + + undoList->pop_back(); + MusEGlobal::redoAction->setEnabled(true); MusEGlobal::undoAction->setEnabled(!undoList->empty()); setUndoRedoText(); @@ -1768,6 +1774,7 @@ void Song::undo() MusEGlobal::audio->msgUpdateSoloStates(); emit songChanged(updateFlags); + emit sigDirty(); } //--------------------------------------------------------- @@ -1777,10 +1784,16 @@ void Song::undo() void Song::redo() { updateFlags = 0; - if (doRedo1()) + + Undo& opGroup = redoList->back(); + + if (opGroup.empty()) return; - MusEGlobal::audio->msgRedo(); - doRedo3(); + + MusEGlobal::audio->msgExecuteOperationGroup(opGroup); + + redoList->pop_back(); + MusEGlobal::undoAction->setEnabled(true); MusEGlobal::redoAction->setEnabled(!redoList->empty()); setUndoRedoText(); @@ -1789,6 +1802,7 @@ void Song::redo() MusEGlobal::audio->msgUpdateSoloStates(); emit songChanged(updateFlags); + emit sigDirty(); } //--------------------------------------------------------- @@ -1802,11 +1816,11 @@ void Song::processMsg(AudioMsg* msg) case SEQM_UPDATE_SOLO_STATES: updateSoloStates(); break; - case SEQM_UNDO: - doUndo2(); + case SEQM_EXECUTE_OPERATION_GROUP: + executeOperationGroup2(*msg->operations); break; - case SEQM_REDO: - doRedo2(); + case SEQM_REVERT_OPERATION_GROUP: + revertOperationGroup2(*msg->operations); break; case SEQM_MOVE_TRACK: if (msg->a > msg->b) { -- cgit v1.2.3