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 | #include <QDebug> | 12 | #include <QDebug> |
| 13 | #include <QScriptValue> | ||
| 13 | #include <QScriptValueList> | 14 | #include <QScriptValueList> |
| 14 | #include <QScriptEngine> | 15 | #include <QScriptEngine> |
| 15 | 16 | ||
| @@ -20,9 +21,11 @@ UndoStackScriptingInterface::UndoStackScriptingInterface(QUndoStack* undoStack) · 4 unmodified lines | |||
| 20 | 21 | ||
| 21 | void UndoStackScriptingInterface::pushCommand(QScriptValue undoFunction, QScriptValue undoData, | 22 | void UndoStackScriptingInterface::pushCommand(QScriptValue undoFunction, QScriptValue undoData, |
| 22 | QScriptValue redoFunction, QScriptValue redoData) { | 23 | QScriptValue redoFunction, QScriptValue redoData) { |
| 23 | ScriptUndoCommand* undoCommand = new ScriptUndoCommand(undoFunction, undoData, redoFunction, redoData); | 24 | if (undoFunction.engine()) { |
| 24 | qDebug() << "Pushing command"; | 25 | ScriptUndoCommand* undoCommand = new ScriptUndoCommand(undoFunction, undoData, redoFunction, redoData); |
| 25 | _undoStack->push(undoCommand); | 26 | undoCommand->moveToThread(undoFunction.engine()->thread()); |
| 27 | _undoStack->push(undoCommand); | ||
| 28 | } | ||
| 26 | } | 29 | } |
| 27 | 30 | ||
| 28 | ScriptUndoCommand::ScriptUndoCommand(QScriptValue undoFunction, QScriptValue undoData, | 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 | void ScriptUndoCommand::undo() { | 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 | QScriptValueList args; | 48 | QScriptValueList args; |
| 38 | args << _undoData; | 49 | args << _undoData; |
| 39 | _undoFunction.call(QScriptValue(), args); | 50 | _undoFunction.call(QScriptValue(), args); |
| 40 | } | 51 | } |
| 41 | 52 | ||
| 42 | void ScriptUndoCommand::redo() { | 53 | |
| 54 | void ScriptUndoCommand::doRedo() { | ||
| 43 | QScriptValueList args; | 55 | QScriptValueList args; |
| 44 | args << _redoData; | 56 | args << _redoData; |
| 45 | _redoFunction.call(QScriptValue(), args); | 57 | _redoFunction.call(QScriptValue(), args); |