implemented undos for effect fields that aren't keyframed
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user