From 13e13fa49331d02993c5a8bcda905f57e89ae7f6 Mon Sep 17 00:00:00 2001 From: alexandr Date: Fri, 31 Aug 2018 11:54:16 +0200 Subject: [PATCH] fix #275751: Continuous view mode is not saved in master In MuseScore::saveAs there was a code which change layout mode to PageView. I deleted it to allow saving layout mode to mscz --- libmscore/score.cpp | 12 ++++++++++++ libmscore/score.h | 3 +++ libmscore/scorefile.cpp | 4 +++- mscore/file.cpp | 10 ++++++---- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/libmscore/score.cpp b/libmscore/score.cpp index 9a290a28c2..ecd8018aa7 100644 --- a/libmscore/score.cpp +++ b/libmscore/score.cpp @@ -2789,6 +2789,18 @@ void Score::selectSingle(Element* e, int staffIdx) _selection.setState(selState); } +//--------------------------------------------------------- +// switchToPageMode +//--------------------------------------------------------- + +void Score::switchToPageMode() + { + if (_layoutMode != LayoutMode::PAGE) { + setLayoutMode(LayoutMode::PAGE); + doLayout(); + } + } + //--------------------------------------------------------- // selectAdd //--------------------------------------------------------- diff --git a/libmscore/score.h b/libmscore/score.h index f986a877a5..5894c23fab 100644 --- a/libmscore/score.h +++ b/libmscore/score.h @@ -1032,6 +1032,7 @@ class Score : public QObject, public ScoreElement { bool floatMode() const { return layoutMode() == LayoutMode::FLOAT; } bool pageMode() const { return layoutMode() == LayoutMode::PAGE; } bool lineMode() const { return layoutMode() == LayoutMode::LINE; } + bool systemMode() const { return layoutMode() == LayoutMode::SYSTEM; } Tuplet* searchTuplet(XmlReader& e, int id); void cmdSelectAll(); @@ -1131,6 +1132,8 @@ class Score : public QObject, public ScoreElement { bool checkKeys(); bool checkClefs(); + void switchToPageMode(); + virtual QVariant getProperty(Pid) const override; virtual bool setProperty(Pid, const QVariant&) override; virtual QVariant propertyDefault(Pid) const override; diff --git a/libmscore/scorefile.cpp b/libmscore/scorefile.cpp index 6c164ba4d9..0f46386c29 100644 --- a/libmscore/scorefile.cpp +++ b/libmscore/scorefile.cpp @@ -115,8 +115,10 @@ void Score::writeMovement(XmlWriter& xml, bool selectionOnly) } } - if (_layoutMode == LayoutMode::LINE) + if (lineMode()) xml.tag("layoutMode", "line"); + if (systemMode()) + xml.tag("layoutMode", "system"); #ifdef OMR if (masterScore()->omr() && xml.writeOmr()) diff --git a/mscore/file.cpp b/mscore/file.cpp index 5a016884d7..b401a9cc1a 100644 --- a/mscore/file.cpp +++ b/mscore/file.cpp @@ -1819,10 +1819,6 @@ bool MuseScore::saveAs(Score* cs, bool saveCopy, const QString& path, const QStr fn += suffix; LayoutMode layoutMode = cs->layoutMode(); - if (layoutMode != LayoutMode::PAGE) { - cs->setLayoutMode(LayoutMode::PAGE); - cs->doLayout(); - } if (ext == "mscx" || ext == "mscz") { // save as mscore *.msc[xz] file QFileInfo fi(fn); @@ -1895,14 +1891,17 @@ bool MuseScore::saveAs(Score* cs, bool saveCopy, const QString& path, const QStr } else if (ext == "pdf") { // save as pdf file *.pdf + cs->switchToPageMode(); rv = savePdf(cs, fn); } else if (ext == "png") { // save as png file *.png + cs->switchToPageMode(); rv = savePng(cs, fn); } else if (ext == "svg") { // save as svg file *.svg + cs->switchToPageMode(); rv = saveSvg(cs, fn); } #ifdef HAS_AUDIOFILE @@ -1914,10 +1913,12 @@ bool MuseScore::saveAs(Score* cs, bool saveCopy, const QString& path, const QStr rv = saveMp3(cs, fn); #endif else if (ext == "spos") { + cs->switchToPageMode(); // save positions of segments rv = savePositions(cs, fn, true); } else if (ext == "mpos") { + cs->switchToPageMode(); // save positions of measures rv = savePositions(cs, fn, false); } @@ -1931,6 +1932,7 @@ bool MuseScore::saveAs(Score* cs, bool saveCopy, const QString& path, const QStr } if (!rv && !MScore::noGui) QMessageBox::critical(this, tr("MuseScore:"), tr("Cannot write into %1").arg(fn)); + if (layoutMode != cs->layoutMode()) { cs->setLayoutMode(layoutMode); cs->doLayout();