implemented undos for effect fields that aren't keyframed

This commit is contained in:
itsmattkc
2018-09-20 21:34:36 +10:00
parent 4e57b1c26d
commit b1c3f44b04
15 changed files with 122 additions and 17 deletions
+16
View File
@@ -1302,3 +1302,19 @@ void KeyframeSet::redo() {
project_changed = true;
done = true;
}
EffectFieldUndo::EffectFieldUndo(EffectField* f) : field(f), done(true) {
old_val = field->get_previous_data();
new_val = field->get_current_data();
}
void EffectFieldUndo::undo() {
field->set_current_data(old_val);
done = false;
}
void EffectFieldUndo::redo() {
if (!done) {
field->set_current_data(new_val);
}
}
+14
View File
@@ -7,6 +7,7 @@ class LabelSlider;
class Effect;
class SourceTable;
class EffectRow;
class EffectField;
class Transition;
struct Clip;
struct Sequence;
@@ -15,6 +16,7 @@ struct Media;
#include <QUndoStack>
#include <QUndoCommand>
#include <QVector>
#include <QVariant>
#define TA_NO_TRANSITION 0
#define TA_OPENING_TRANSITION 1
@@ -427,4 +429,16 @@ private:
bool done;
};
class EffectFieldUndo : public QUndoCommand {
public:
EffectFieldUndo(EffectField* field);
void undo();
void redo();
private:
EffectField* field;
QVariant old_val;
QVariant new_val;
bool done;
};
#endif // UNDO_H