projectserializer: explicitly differentiate between node and clip pasting
This commit is contained in:
@@ -42,6 +42,7 @@ public:
|
||||
{
|
||||
kProject,
|
||||
kOnlyNodes,
|
||||
kOnlyClips,
|
||||
kOnlyMarkers,
|
||||
kOnlyKeyframes
|
||||
};
|
||||
|
||||
@@ -35,7 +35,7 @@ ProjectSerializer220403::LoadData ProjectSerializer220403::Load(Project *project
|
||||
LoadData load_data;
|
||||
|
||||
if ((load_type == kProject && reader->name() == QStringLiteral("project"))
|
||||
|| (load_type == kOnlyNodes && (reader->name() == QStringLiteral("nodes") || reader->name() == QStringLiteral("timeline")))
|
||||
|| ((load_type == kOnlyNodes && reader->name() == QStringLiteral("nodes")) || (load_type == kOnlyClips && reader->name() == QStringLiteral("timeline")))
|
||||
|| (load_type == kOnlyKeyframes && reader->name() == QStringLiteral("keyframes"))
|
||||
|| (load_type == kOnlyMarkers && reader->name() == QStringLiteral("markers"))) {
|
||||
while (XMLReadNextStartElement(reader)) {
|
||||
|
||||
@@ -172,9 +172,10 @@ ProjectSerializer230220::LoadData ProjectSerializer230220::Load(Project *project
|
||||
}
|
||||
break;
|
||||
}
|
||||
case kOnlyClips:
|
||||
case kOnlyNodes:
|
||||
{
|
||||
if (reader->name() == QStringLiteral("nodes")) {
|
||||
if ((load_type == kOnlyNodes && reader->name() == QStringLiteral("nodes")) || (load_type == kOnlyClips && reader->name() == QStringLiteral("timeline"))) {
|
||||
QMap<quintptr, Node*> skipped_items;
|
||||
|
||||
while (XMLReadNextStartElement(reader)) {
|
||||
@@ -395,7 +396,11 @@ void ProjectSerializer230220::Save(QXmlStreamWriter *writer, const SaveData &dat
|
||||
|
||||
writer->writeEndElement(); // keyframes
|
||||
} else if (!data.GetOnlySerializeNodes().empty()) {
|
||||
if (data.type() == kOnlyClips) {
|
||||
writer->writeStartElement(QStringLiteral("timeline"));
|
||||
} else {
|
||||
writer->writeStartElement(QStringLiteral("nodes"));
|
||||
}
|
||||
|
||||
writer->writeAttribute(QStringLiteral("version"), QString::number(1));
|
||||
|
||||
|
||||
@@ -659,7 +659,7 @@ bool TimelineWidget::CopySelected(bool cut)
|
||||
}
|
||||
}
|
||||
|
||||
ProjectSerializer::SaveData sdata(ProjectSerializer::kOnlyNodes);
|
||||
ProjectSerializer::SaveData sdata(ProjectSerializer::kOnlyClips);
|
||||
sdata.SetOnlySerializeNodesAndResolveGroups(selected_nodes);
|
||||
|
||||
// Cache the earliest in point so all copied clips have a "relative" in point that can be pasted anywhere
|
||||
@@ -1938,7 +1938,7 @@ bool TimelineWidget::PasteInternal(bool insert)
|
||||
return false;
|
||||
}
|
||||
|
||||
ProjectSerializer::Result res = ProjectSerializer::Paste(ProjectSerializer::kOnlyNodes, GetConnectedNode()->project());
|
||||
ProjectSerializer::Result res = ProjectSerializer::Paste(ProjectSerializer::kOnlyClips, GetConnectedNode()->project());
|
||||
if (res.GetLoadData().nodes.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user