diff --git a/libraries/script-engine/src/UndoStackScriptingInterface.cpp b/libraries/script-engine/src/UndoStackScriptingInterface.cpp index ed0f4d563d..6ee3735c13 100644 --- a/libraries/script-engine/src/UndoStackScriptingInterface.cpp +++ b/libraries/script-engine/src/UndoStackScriptingInterface.cpp @@ -30,6 +30,7 @@ void UndoStackScriptingInterface::pushCommand(QScriptValue undoFunction, QScript ScriptUndoCommand::ScriptUndoCommand(QScriptValue undoFunction, QScriptValue undoData, QScriptValue redoFunction, QScriptValue redoData) : + _hasRedone(false), _undoFunction(undoFunction), _undoData(undoData), _redoFunction(redoFunction), @@ -41,7 +42,11 @@ void ScriptUndoCommand::undo() { } void ScriptUndoCommand::redo() { - QMetaObject::invokeMethod(this, "doRedo"); + if (_hasRedone) { + qDebug() << "Doing redo!"; + QMetaObject::invokeMethod(this, "doRedo"); + } + _hasRedone = true; } void ScriptUndoCommand::doUndo() { @@ -50,7 +55,6 @@ void ScriptUndoCommand::doUndo() { _undoFunction.call(QScriptValue(), args); } - void ScriptUndoCommand::doRedo() { QScriptValueList args; args << _redoData; diff --git a/libraries/script-engine/src/UndoStackScriptingInterface.h b/libraries/script-engine/src/UndoStackScriptingInterface.h index 835e5dfff4..479648fc92 100644 --- a/libraries/script-engine/src/UndoStackScriptingInterface.h +++ b/libraries/script-engine/src/UndoStackScriptingInterface.h @@ -43,6 +43,7 @@ public slots: void doRedo(); private: + bool _hasRedone; QScriptValue _undoFunction; QScriptValue _undoData; QScriptValue _redoFunction;