Make renaming markers undoable

This commit is contained in:
Thomas Wilshaw
2021-10-22 22:15:56 +01:00
parent 5c7073eab6
commit 87b66e0cbb
5 changed files with 53 additions and 1 deletions
+23
View File
@@ -89,4 +89,27 @@ void MarkerChangeColorCommand::undo()
marker_->set_color(old_color_);
}
MarkerChangeNameCommand::MarkerChangeNameCommand(Project *project, TimelineMarker *marker, QString new_name) :
project_(project),
marker_(marker),
old_name_(marker->name()),
new_name_(new_name)
{
}
Project* MarkerChangeNameCommand::GetRelevantProject() const
{
return project_;
}
void MarkerChangeNameCommand::redo()
{
marker_->set_name(new_name_);
}
void MarkerChangeNameCommand::undo()
{
marker_->set_name(old_name_);
}
}
+17
View File
@@ -78,6 +78,23 @@ class MarkerChangeColorCommand : public UndoCommand {
int new_color_;
};
class MarkerChangeNameCommand : public UndoCommand {
public:
MarkerChangeNameCommand(Project* project, TimelineMarker* marker, QString name);
virtual Project* GetRelevantProject() const override;
protected:
virtual void redo() override;
virtual void undo() override;
private:
Project* project_;
TimelineMarker* marker_;
QString old_name_;
QString new_name_;
};
}
#endif // TIMELINEUNDOTRACK_H
+1 -1
View File
@@ -211,7 +211,7 @@ void SeekableWidget::addMarker(TimelineMarker* marker)
connect(marker_widget, &Marker::ActiveChanged, marker, &TimelineMarker::set_active);
connect(marker, &TimelineMarker::ActiveChanged, marker_widget, &Marker::SetActive);
connect(marker_widget, &Marker::NameChanged, marker, &TimelineMarker::set_name);
connect(marker_widget, &Marker::NameChanged, marker, &TimelineMarker::set_name_undo);
connect(marker, &TimelineMarker::NameChanged, marker_widget, &Marker::SetName);
connect(marker_widget, &Marker::TimeChanged, marker, &TimelineMarker::set_time);