reimplemented dragging all field types
This commit is contained in:
+26
-16
@@ -607,22 +607,6 @@ void KeyframeDelete::doRedo() {
|
||||
field->keyframes.removeAt(index);
|
||||
}
|
||||
|
||||
/*
|
||||
EffectFieldUndo::EffectFieldUndo(EffectField* f, const QVariant& old_data, const QVariant new_data) :
|
||||
field(f),
|
||||
old_val(old_data),
|
||||
new_val(new_data)
|
||||
{}
|
||||
|
||||
void EffectFieldUndo::doUndo() {
|
||||
field->SetCurrentValue(old_val);
|
||||
}
|
||||
|
||||
void EffectFieldUndo::doRedo() {
|
||||
field->SetCurrentValue(new_val);
|
||||
}
|
||||
*/
|
||||
|
||||
SetClipProperty::SetClipProperty(SetClipPropertyType type) : type_(type)
|
||||
{}
|
||||
|
||||
@@ -1169,3 +1153,29 @@ void OliveAction::redo() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
KeyframeDataChange::KeyframeDataChange(EffectField *field) :
|
||||
field_(field),
|
||||
done_(true)
|
||||
{
|
||||
old_keys_ = field_->keyframes;
|
||||
}
|
||||
|
||||
void KeyframeDataChange::SetNewKeyframes()
|
||||
{
|
||||
new_keys_ = field_->keyframes;
|
||||
}
|
||||
|
||||
void KeyframeDataChange::doUndo()
|
||||
{
|
||||
field_->keyframes = old_keys_;
|
||||
done_ = false;
|
||||
}
|
||||
|
||||
void KeyframeDataChange::doRedo()
|
||||
{
|
||||
if (!done_) {
|
||||
field_->keyframes = new_keys_;
|
||||
done_ = true;
|
||||
}
|
||||
}
|
||||
|
||||
+39
-20
@@ -28,15 +28,30 @@
|
||||
#include <QVariant>
|
||||
#include <QModelIndex>
|
||||
|
||||
#include "project/projectelements.h"
|
||||
#include "timeline/selection.h"
|
||||
#include "timeline/clip.h"
|
||||
#include "timeline/sequence.h"
|
||||
#include "effects/transition.h"
|
||||
#include "effects/effectfield.h"
|
||||
#include "comboaction.h"
|
||||
|
||||
#include "ui/labelslider.h"
|
||||
#include "ui/sourcetable.h"
|
||||
#include "timeline/marker.h"
|
||||
#include "timeline/selection.h"
|
||||
#include "effects/keyframe.h"
|
||||
|
||||
class Clip;
|
||||
using ClipPtr = std::shared_ptr<Clip>;
|
||||
|
||||
class Sequence;
|
||||
using SequencePtr = std::shared_ptr<Sequence>;
|
||||
|
||||
class Media;
|
||||
using MediaPtr = std::shared_ptr<Media>;
|
||||
|
||||
class Effect;
|
||||
using EffectPtr = std::shared_ptr<Effect>;
|
||||
|
||||
class Transition;
|
||||
using TransitionPtr = std::shared_ptr<Transition>;
|
||||
|
||||
struct EffectMeta;
|
||||
class EffectRow;
|
||||
class EffectField;
|
||||
|
||||
namespace olive {
|
||||
extern QUndoStack UndoStack;
|
||||
@@ -334,18 +349,6 @@ private:
|
||||
bool done;
|
||||
};
|
||||
|
||||
class EffectFieldUndo : public OliveAction {
|
||||
public:
|
||||
EffectFieldUndo(EffectField* field, const QVariant &old_data, const QVariant new_data);
|
||||
virtual void doUndo() override;
|
||||
virtual void doRedo() override;
|
||||
private:
|
||||
EffectField* field;
|
||||
QVariant old_val;
|
||||
QVariant new_val;
|
||||
bool done;
|
||||
};
|
||||
|
||||
enum SetClipPropertyType {
|
||||
kSetClipPropertyAutoscale,
|
||||
kSetClipPropertyReversed,
|
||||
@@ -620,4 +623,20 @@ private:
|
||||
QByteArray old_data;
|
||||
};
|
||||
|
||||
class KeyframeDataChange : public OliveAction {
|
||||
public:
|
||||
KeyframeDataChange(EffectField* field);
|
||||
|
||||
void SetNewKeyframes();
|
||||
|
||||
virtual void doUndo() override;
|
||||
virtual void doRedo() override;
|
||||
|
||||
private:
|
||||
EffectField* field_;
|
||||
QVector<EffectKeyframe> old_keys_;
|
||||
QVector<EffectKeyframe> new_keys_;
|
||||
bool done_;
|
||||
};
|
||||
|
||||
#endif // UNDO_H
|
||||
|
||||
Reference in New Issue
Block a user