implemented gizmo undoing

This commit is contained in:
itsmattkc
2018-11-30 10:24:27 +11:00
parent 6f84e47c2c
commit f6406cab9c
4 changed files with 58 additions and 0 deletions
+24
View File
@@ -1299,3 +1299,27 @@ void SetPointer::redo() {
*p = new_data;
mainWindow->setWindowModified(true);
}
MoveGizmo::MoveGizmo(Effect *e, EffectGizmo *g, int x_movement, int y_movement, double tc) :
effect(e),
gizmo(g),
x(x_movement),
y(y_movement),
timecode(tc),
done(true),
old_changed(mainWindow->isWindowModified())
{}
void MoveGizmo::undo() {
effect->gizmo_move(gizmo, -x, -y, timecode);
mainWindow->setWindowModified(old_changed);
done = false;
}
void MoveGizmo::redo() {
if (!done) {
effect->gizmo_move(gizmo, x, y, timecode);
mainWindow->setWindowModified(true);
done = true;
}
}
+16
View File
@@ -9,6 +9,7 @@ class SourceTable;
class EffectRow;
class EffectField;
class Transition;
class EffectGizmo;
struct Clip;
struct Sequence;
struct Media;
@@ -597,4 +598,19 @@ private:
void* old_data;
};
class MoveGizmo : public QUndoCommand {
public:
MoveGizmo(Effect* e, EffectGizmo* g, int x_movement, int y_movement, double tc);
void undo();
void redo();
private:
Effect* effect;
EffectGizmo* gizmo;
int x;
int y;
double timecode;
bool done;
bool old_changed;
};
#endif // UNDO_H