Make widget deletion undoable

This commit is contained in:
Thomas Wilshaw
2021-10-22 22:15:52 +01:00
parent c445dc46a9
commit 6e77606c30
3 changed files with 53 additions and 4 deletions
+25
View File
@@ -688,6 +688,31 @@ void TimeBasedWidget::MarkerAddCommand::undo()
marker_list_->RemoveMarker(added_marker_);
}
TimeBasedWidget::MarkerRemoveCommand::MarkerRemoveCommand(Project* project, TimelineMarker* marker, TimelineMarkerList* marker_list) :
project_(project),
marker_(marker),
marker_list_(marker_list),
range_(marker->time()),
name_(marker->name()),
color_(marker->color())
{
}
Project *TimeBasedWidget::MarkerRemoveCommand::GetRelevantProject() const
{
return project_;
}
void TimeBasedWidget::MarkerRemoveCommand::redo()
{
marker_list_->RemoveMarker(marker_);
}
void TimeBasedWidget::MarkerRemoveCommand::undo()
{
marker_list_->AddMarker(range_, name_, color_);
}
bool TimeBasedWidget::eventFilter(QObject *object, QEvent *event)
{
if (wheel_passthrough_objects_.contains(object) && event->type() == QEvent::Wheel) {
+22
View File
@@ -54,6 +54,28 @@ public:
virtual bool eventFilter(QObject* object, QEvent* event) override;
// Temp file location
class MarkerRemoveCommand : public UndoCommand {
public:
MarkerRemoveCommand(Project* project, TimelineMarker* marker, TimelineMarkerList* marker_list);
virtual Project* GetRelevantProject() const override;
protected:
virtual void redo() override;
virtual void undo() override;
private:
Project* project_;
TimelineMarker* marker_;
TimelineMarkerList* marker_list_;
TimeRange range_;
QString name_;
int color_;
TimelineMarker* removed_marker_;
};
public slots:
void SetTime(const rational &time);