diff --git a/mscore/file.cpp b/mscore/file.cpp index 6efeae9d92..5cbb48fe15 100644 --- a/mscore/file.cpp +++ b/mscore/file.cpp @@ -1822,6 +1822,25 @@ bool MuseScore::saveAs(Score* cs, bool saveCopy, const QString& path, const QStr // to have it accessible to resources QString originalScoreFName(cs->masterScore()->fileInfo()->canonicalFilePath()); cs->masterScore()->fileInfo()->setFile(fn); + if (!cs->isMaster()) { // clone metaTags from masterScore + QMapIterator j(cs->masterScore()->metaTags()); + while (j.hasNext()) { + j.next(); + if (j.key() != "partName") // don't copy "partName" should that exist in masterScore + cs->metaTags().insert(j.key(), j.value()); +#if defined(Q_OS_WIN) // Update "platform", may not be worth the effort + cs->metaTags().insert("platform", "Microsoft Windows"); +#elif defined(Q_OS_MAC) + cs->metaTags().insert("platform", "Apple Macintosh"); +#elif defined(Q_OS_LINUX) + cs->metaTags().insert("platform", "Linux"); +#else + cs->metaTags().insert("platform", "Unknown"); +#endif + cs->metaTags().insert("source", ""); // Empty "source" to avoid clashes with masterrScore when doing "Save online" + cs->metaTags().insert("creationDate", QDate::currentDate().toString(Qt::ISODate)); // update "creationDate" + } + } try { if (ext == "mscz") cs->saveCompressedFile(fi, false); @@ -1832,6 +1851,15 @@ bool MuseScore::saveAs(Score* cs, bool saveCopy, const QString& path, const QStr rv = false; QMessageBox::critical(this, tr("Save As"), s); } + if (!cs->isMaster()) { // remove metaTags added above + QMapIterator j(cs->masterScore()->metaTags()); + while (j.hasNext()) { + j.next(); + // remove all but "partName", should that exist in masterScore + if (j.key() != "partName") + cs->metaTags().remove(j.key()); + } + } cs->masterScore()->fileInfo()->setFile(originalScoreFName); // restore original file name if (rv && !saveCopy) {