From 5a3d59f8e395681b11faa3e90c0262fd089f9c09 Mon Sep 17 00:00:00 2001 From: Julian Clementson Date: Mon, 28 Jan 2019 10:14:30 +0000 Subject: [PATCH] fix #280885: Re-instate persistence of "First page number" setting --- libmscore/edit.cpp | 9 +++++++++ libmscore/read206.cpp | 2 ++ libmscore/read301.cpp | 2 ++ libmscore/score.h | 1 + libmscore/undo.cpp | 14 ++++++++++++++ libmscore/undo.h | 15 +++++++++++++++ mscore/pagesettings.cpp | 1 + 7 files changed, 44 insertions(+) diff --git a/libmscore/edit.cpp b/libmscore/edit.cpp index dccb8f173dfe..f49c59dd62f1 100644 --- a/libmscore/edit.cpp +++ b/libmscore/edit.cpp @@ -3434,6 +3434,15 @@ void Score::undoChangeStyleVal(Sid idx, const QVariant& v) undo(new ChangeStyleVal(this, idx, v)); } +//--------------------------------------------------------- +// undoChangePageNumberOffset +//--------------------------------------------------------- + +void Score::undoChangePageNumberOffset(int po) + { + undo(new ChangePageNumberOffset(this, po)); + } + //--------------------------------------------------------- // undoChangeElement //--------------------------------------------------------- diff --git a/libmscore/read206.cpp b/libmscore/read206.cpp index 667ffa2609a8..f6bb660b6619 100644 --- a/libmscore/read206.cpp +++ b/libmscore/read206.cpp @@ -3599,6 +3599,8 @@ static bool readScore(Score* score, XmlReader& e) score->setCurrentLayer(e.readInt()); else if (tag == "Synthesizer") score->synthesizerState().read(e); + else if (tag == "page-offset") + score->setPageNumberOffset(e.readInt()); else if (tag == "Division") score->setFileDivision(e.readInt()); else if (tag == "showInvisible") diff --git a/libmscore/read301.cpp b/libmscore/read301.cpp index 2d1af8c5f450..a6133c44af6b 100644 --- a/libmscore/read301.cpp +++ b/libmscore/read301.cpp @@ -79,6 +79,8 @@ bool Score::read(XmlReader& e) _currentLayer = e.readInt(); else if (tag == "Synthesizer") _synthesizerState.read(e); + else if (tag == "page-offset") + _pageNumberOffset = e.readInt(); else if (tag == "Division") _fileDivision = e.readInt(); else if (tag == "showInvisible") diff --git a/libmscore/score.h b/libmscore/score.h index e7bc6faa858b..5c8db9f3addf 100644 --- a/libmscore/score.h +++ b/libmscore/score.h @@ -629,6 +629,7 @@ class Score : public QObject, public ScoreElement { void undoRemoveBracket(Bracket*); void undoInsertTime(int tick, int len); void undoChangeStyleVal(Sid idx, const QVariant& v); + void undoChangePageNumberOffset(int po); Note* setGraceNote(Chord*, int pitch, NoteType type, int len); diff --git a/libmscore/undo.cpp b/libmscore/undo.cpp index a177aae8549a..14081dc626f2 100644 --- a/libmscore/undo.cpp +++ b/libmscore/undo.cpp @@ -1508,6 +1508,20 @@ void ChangeStyleVal::flip(EditData*) value = v; } +//--------------------------------------------------------- +// ChangePageNumberOffset::flip +//--------------------------------------------------------- + +void ChangePageNumberOffset::flip(EditData*) + { + int po = score->pageNumberOffset(); + + score->setPageNumberOffset(pageOffset); + score->setLayoutAll(); + + pageOffset = po; + } + //--------------------------------------------------------- // ChangeChordStaffMove //--------------------------------------------------------- diff --git a/libmscore/undo.h b/libmscore/undo.h index 694db58937e0..f6bbd1de8718 100644 --- a/libmscore/undo.h +++ b/libmscore/undo.h @@ -652,6 +652,21 @@ class ChangeStyleVal : public UndoCommand { UNDO_NAME("ChangeStyleVal") }; +//--------------------------------------------------------- +// ChangePageNumberOffset +//--------------------------------------------------------- + +class ChangePageNumberOffset : public UndoCommand { + Score* score; + int pageOffset; + + void flip(EditData*) override; + + public: + ChangePageNumberOffset(Score* s, int po) : score(s), pageOffset(po) {} + UNDO_NAME("ChangePageNumberOffset") + }; + //--------------------------------------------------------- // ChangeChordStaffMove //--------------------------------------------------------- diff --git a/mscore/pagesettings.cpp b/mscore/pagesettings.cpp index 21d6a6b77f46..e611264bfe87 100644 --- a/mscore/pagesettings.cpp +++ b/mscore/pagesettings.cpp @@ -305,6 +305,7 @@ void PageSettings::applyToScore(Score* s) s->undoChangeStyleVal(Sid::pageOddLeftMargin, oddPageLeftMargin->value() * f); s->undoChangeStyleVal(Sid::pageTwosided, twosided->isChecked()); s->undoChangeStyleVal(Sid::spatium, spatiumEntry->value() * f1); + s->undoChangePageNumberOffset(pageOffsetEntry->value() - 1); s->endCmd(); }