Showing the changes to libraries/script-engine/src/UndoStackScriptingInterface.cpp (1 of 2 files). Show all
Unified · Split
| @@ -10,6 +10,7 @@ · 9 unmodified lines | ||
| 10 | 10 | // |
| 11 | 11 | |
| 12 | 12 | #include <QDebug> |
| 13 | +#include <QScriptValue> | |
| 13 | 14 | #include <QScriptValueList> |
| 14 | 15 | #include <QScriptEngine> |
| 15 | 16 | |
| @@ -20,9 +21,11 @@ UndoStackScriptingInterface::UndoStackScriptingInterface(QUndoStack* undoStack) · 4 unmodified lines | ||
| 20 | 21 | |
| 21 | 22 | void UndoStackScriptingInterface::pushCommand(QScriptValue undoFunction, QScriptValue undoData, |
| 22 | 23 | QScriptValue redoFunction, QScriptValue redoData) { |
| 23 | − ScriptUndoCommand* undoCommand = new ScriptUndoCommand(undoFunction, undoData, redoFunction, redoData); | |
| 24 | − qDebug() << "Pushing command"; | |
| 25 | − _undoStack->push(undoCommand); | |
| 24 | + if (undoFunction.engine()) { | |
| 25 | + ScriptUndoCommand* undoCommand = new ScriptUndoCommand(undoFunction, undoData, redoFunction, redoData); | |
| 26 | + undoCommand->moveToThread(undoFunction.engine()->thread()); | |
| 27 | + _undoStack->push(undoCommand); | |
| 28 | + } | |
| 26 | 29 | } |
| 27 | 30 | |
| 28 | 31 | ScriptUndoCommand::ScriptUndoCommand(QScriptValue undoFunction, QScriptValue undoData, |
| @@ -34,12 +37,21 @@ ScriptUndoCommand::ScriptUndoCommand(QScriptValue undoFunction, QScriptValue und · 5 unmodified lines | ||
| 34 | 37 | } |
| 35 | 38 | |
| 36 | 39 | void ScriptUndoCommand::undo() { |
| 40 | + QMetaObject::invokeMethod(this, "doUndo"); | |
| 41 | +} | |
| 42 | + | |
| 43 | +void ScriptUndoCommand::redo() { | |
| 44 | + QMetaObject::invokeMethod(this, "doRedo"); | |
| 45 | +} | |
| 46 | + | |
| 47 | +void ScriptUndoCommand::doUndo() { | |
| 37 | 48 | QScriptValueList args; |
| 38 | 49 | args << _undoData; |
| 39 | 50 | _undoFunction.call(QScriptValue(), args); |
| 40 | 51 | } |
| 41 | 52 | |
| 42 | −void ScriptUndoCommand::redo() { | |
| 53 | + | |
| 54 | +void ScriptUndoCommand::doRedo() { | |
| 43 | 55 | QScriptValueList args; |
| 44 | 56 | args << _redoData; |
| 45 | 57 | _redoFunction.call(QScriptValue(), args); |