From cce1e23eec54cfc173974cbf24a87571d1141498 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 28 Oct 2014 13:43:22 -0700 Subject: [PATCH] Update UndoStackScriptingInterface to not call redo automatically --- .../script-engine/src/UndoStackScriptingInterface.cpp | 8 ++++++-- libraries/script-engine/src/UndoStackScriptingInterface.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) 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;