projectserializer: explicitly differentiate between node and clip pasting

This commit is contained in:
itsmattkc
2023-03-11 13:58:55 -08:00
parent 3e47da7009
commit 936d75063f
4 changed files with 11 additions and 5 deletions
+1
View File
@@ -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()) {
writer->writeStartElement(QStringLiteral("nodes"));
if (data.type() == kOnlyClips) {
writer->writeStartElement(QStringLiteral("timeline"));
} else {
writer->writeStartElement(QStringLiteral("nodes"));
}
writer->writeAttribute(QStringLiteral("version"), QString::number(1));