diff --git a/src/lib/component/controller/UndoRedoController.cpp b/src/lib/component/controller/UndoRedoController.cpp index 0bf60844..ebd9f605 100644 --- a/src/lib/component/controller/UndoRedoController.cpp +++ b/src/lib/component/controller/UndoRedoController.cpp @@ -22,9 +22,10 @@ UndoRedoView* UndoRedoController::getView() return Controller::getView(); } -UndoRedoController::Command::Command(std::shared_ptr message, Order order) +UndoRedoController::Command::Command(std::shared_ptr message, Order order, bool replayLastOnly) : message(message) , order(order) + , replayLastOnly(replayLastOnly) { } @@ -63,7 +64,7 @@ void UndoRedoController::handleMessage(MessageActivateLocalSymbols* message) return; } - Command command(std::make_shared(*message), Command::ORDER_VIEW); + Command command(std::make_shared(*message), Command::ORDER_VIEW, true); processCommand(command); } @@ -96,7 +97,7 @@ void UndoRedoController::handleMessage(MessageActivateTokenIds* message) void UndoRedoController::handleMessage(MessageChangeFileView* message) { - Command command(std::make_shared(*message), Command::ORDER_ADAPT); + Command command(std::make_shared(*message), Command::ORDER_VIEW); processCommand(command); } @@ -132,13 +133,13 @@ void UndoRedoController::handleMessage(MessageGraphNodeBundleSplit* message) void UndoRedoController::handleMessage(MessageGraphNodeExpand* message) { - Command command(std::make_shared(*message), Command::ORDER_ADAPT); + Command command(std::make_shared(*message), Command::ORDER_VIEW); processCommand(command); } void UndoRedoController::handleMessage(MessageGraphNodeMove* message) { - Command command(std::make_shared(*message), Command::ORDER_ADAPT); + Command command(std::make_shared(*message), Command::ORDER_VIEW); processCommand(command); } @@ -202,7 +203,7 @@ void UndoRedoController::handleMessage(MessageScrollCode* message) return; } - Command command(std::make_shared(*message), Command::ORDER_VIEW); + Command command(std::make_shared(*message), Command::ORDER_VIEW, true); processCommand(command); } @@ -232,7 +233,7 @@ void UndoRedoController::handleMessage(MessageSearchFullText* message) void UndoRedoController::handleMessage(MessageShowScope* message) { - Command command(std::make_shared(*message), Command::ORDER_ADAPT); + Command command(std::make_shared(*message), Command::ORDER_VIEW); processCommand(command); } @@ -281,13 +282,16 @@ void UndoRedoController::replayCommands(std::list::iterator it) while (it != m_iterator) { m = it->message; - if (it->order != Command::ORDER_VIEW) + if (it->order != Command::ORDER_VIEW || it->replayLastOnly == false) { m->setIsReplayed(true); m->setIsLast(it == std::prev(m_iterator)); m->dispatch(); - viewCommands.clear(); + if (it->order != Command::ORDER_VIEW) + { + viewCommands.clear(); + } } else { diff --git a/src/lib/component/controller/UndoRedoController.h b/src/lib/component/controller/UndoRedoController.h index aa587eec..c88dc20c 100644 --- a/src/lib/component/controller/UndoRedoController.h +++ b/src/lib/component/controller/UndoRedoController.h @@ -66,10 +66,11 @@ private: ORDER_VIEW }; - Command(std::shared_ptr message, Order order); + Command(std::shared_ptr message, Order order, bool replayLastOnly = false); std::shared_ptr message; Order order; + bool replayLastOnly; }; virtual void handleMessage(MessageActivateEdge* message);