summaryrefslogtreecommitdiffstats
path: root/src/server/events/Undo.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2016-09-18 11:43:08 -0400
committerDavid Robillard <d@drobilla.net>2016-09-18 11:43:30 -0400
commit39109efb8dc196164911922d199a68747a4788db (patch)
tree65d48aa361c7b3910f88268ed8a510ac6426daee /src/server/events/Undo.cpp
parenta43528ab069f325e68dab6e18cf2cab19cc22e56 (diff)
downloadingen-39109efb8dc196164911922d199a68747a4788db.tar.gz
ingen-39109efb8dc196164911922d199a68747a4788db.tar.bz2
ingen-39109efb8dc196164911922d199a68747a4788db.zip
Fix undo after redo
Diffstat (limited to 'src/server/events/Undo.cpp')
-rw-r--r--src/server/events/Undo.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/server/events/Undo.cpp b/src/server/events/Undo.cpp
index 15c18ca2..0510d50f 100644
--- a/src/server/events/Undo.cpp
+++ b/src/server/events/Undo.cpp
@@ -36,13 +36,14 @@ Undo::Undo(Engine& engine,
bool
Undo::pre_process()
{
- UndoStack* stack = _is_redo ? _engine.redo_stack() : _engine.undo_stack();
- Event::Mode mode = _is_redo ? Event::Mode::REDO : Event::Mode::UNDO;
+ UndoStack* const stack = _is_redo ? _engine.redo_stack() : _engine.undo_stack();
+ const Event::Mode mode = _is_redo ? Event::Mode::REDO : Event::Mode::UNDO;
if (stack->empty()) {
return Event::pre_process_done(Status::NOT_FOUND);
}
+ const Event::Mode orig_mode = _engine.event_writer()->get_event_mode();
_entry = stack->pop();
_engine.event_writer()->set_event_mode(mode);
if (_entry.events.size() > 1) {
@@ -56,7 +57,7 @@ Undo::pre_process()
if (_entry.events.size() > 1) {
_engine.interface()->bundle_end();
}
- _engine.event_writer()->set_event_mode(mode);
+ _engine.event_writer()->set_event_mode(orig_mode);
return Event::pre_process_done(Status::SUCCESS);
}