diff --git a/app/node/project/serializer/serializer.h b/app/node/project/serializer/serializer.h index 45cd89517..7c5bf9e5b 100644 --- a/app/node/project/serializer/serializer.h +++ b/app/node/project/serializer/serializer.h @@ -42,6 +42,7 @@ public: { kProject, kOnlyNodes, + kOnlyClips, kOnlyMarkers, kOnlyKeyframes }; diff --git a/app/node/project/serializer/serializer220403.cpp b/app/node/project/serializer/serializer220403.cpp index 32698bb09..2c8cb43cb 100644 --- a/app/node/project/serializer/serializer220403.cpp +++ b/app/node/project/serializer/serializer220403.cpp @@ -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)) { diff --git a/app/node/project/serializer/serializer230220.cpp b/app/node/project/serializer/serializer230220.cpp index 88de00be8..06e140ad6 100644 --- a/app/node/project/serializer/serializer230220.cpp +++ b/app/node/project/serializer/serializer230220.cpp @@ -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 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)); diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index 3765b0c0b..914796e15 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -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; }