Skip to content

Commit

Permalink
Fix #275659: Redundant undo entries
Browse files Browse the repository at this point in the history
  • Loading branch information
Niels Erik Gjødsbøl Nielsen authored and dmitrio95 committed Mar 12, 2020
1 parent 42da9ca commit 001c34c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 29 deletions.
59 changes: 31 additions & 28 deletions mscore/pagesettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ PageSettings::PageSettings(QWidget* parent)
static_cast<QVBoxLayout*>(previewGroup->layout())->insertWidget(0, sa);

mmUnit = true; // should be made a global configuration item
_changeFlag = false;

if (mmUnit)
mmButton->setChecked(true);
Expand Down Expand Up @@ -110,7 +111,8 @@ void PageSettings::setScore(Score* s)
preview->setScore(clonedScore);
buttonApplyToAllParts->setEnabled(!cs->isMaster());
updateValues();
updatePreview(0);
updatePreview();
_changeFlag = false;
}

//---------------------------------------------------------
Expand Down Expand Up @@ -222,6 +224,7 @@ void PageSettings::updateValues()
pageOffsetEntry->setValue(score->pageNumberOffset() + 1);

blockSignals(false);
_changeFlag = true;
}

//---------------------------------------------------------
Expand Down Expand Up @@ -260,7 +263,7 @@ void PageSettings::orientationClicked()
double f = mmUnit ? 1.0/INCH : 1.0;
preview->score()->style().set(Sid::pagePrintableWidth, h - (oddPageLeftMargin->value() + oddPageRightMargin->value()) * f);
updateValues();
updatePreview(0);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -271,7 +274,7 @@ void PageSettings::twosidedToggled(bool flag)
{
preview->score()->style().set(Sid::pageTwosided, flag);
updateValues();
updatePreview(1);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -280,8 +283,13 @@ void PageSettings::twosidedToggled(bool flag)

void PageSettings::apply()
{
if (!_changeFlag)
return;
cs->startCmd();
applyToScore(cs);
cs->endCmd();
mscore->endCmd();
_changeFlag = false;
}

//---------------------------------------------------------
Expand All @@ -290,7 +298,6 @@ void PageSettings::apply()

void PageSettings::applyToScore(Score* s)
{
s->startCmd();
double f = mmUnit ? 1.0/INCH : 1.0;
double f1 = mmUnit ? DPMM : DPI;

Expand All @@ -312,8 +319,6 @@ void PageSettings::applyToScore(Score* s)
s->spatiumChanged(oldSpatium, newSpatium);

s->undoChangePageNumberOffset(pageOffsetEntry->value() - 1);

s->endCmd();
}

//---------------------------------------------------------
Expand All @@ -322,8 +327,13 @@ void PageSettings::applyToScore(Score* s)

void PageSettings::applyToAllParts()
{
if (!_changeFlag)
return;
cs->startCmd();
for (Excerpt* e : cs->excerpts())
applyToScore(e->partScore());
cs->endCmd();
_changeFlag = false;
}

//---------------------------------------------------------
Expand Down Expand Up @@ -363,7 +373,7 @@ void PageSettings::pageFormatSelected(int size)
double f = mmUnit ? 1.0/INCH : 1.0;
s->style().set(Sid::pagePrintableWidth, sz.width() - (oddPageLeftMargin->value() + oddPageRightMargin->value()) * f);
updateValues();
updatePreview(0);
updatePreview();
}
}

Expand All @@ -376,7 +386,7 @@ void PageSettings::otmChanged(double val)
if (mmUnit)
val /= INCH;
preview->score()->style().set(Sid::pageOddTopMargin, val);
updatePreview(1);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -402,7 +412,7 @@ void PageSettings::olmChanged(double val)
s->style().set(Sid::pageOddLeftMargin, val);
s->style().set(Sid::pagePrintableWidth, s->styleD(Sid::pageWidth) - s->styleD(Sid::pageEvenLeftMargin) - val);

updatePreview(0);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -427,7 +437,7 @@ void PageSettings::ormChanged(double val)
evenPageRightMargin->blockSignals(false);
}
s->style().set(Sid::pagePrintableWidth, s->styleD(Sid::pageWidth) - s->styleD(Sid::pageOddLeftMargin) - val);
updatePreview(0);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -439,7 +449,7 @@ void PageSettings::obmChanged(double val)
if (mmUnit)
val /= INCH;
preview->score()->style().set(Sid::pageOddBottomMargin, val);
updatePreview(1);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -451,7 +461,7 @@ void PageSettings::etmChanged(double val)
if (mmUnit)
val /= INCH;
preview->score()->style().set(Sid::pageEvenTopMargin, val);
updatePreview(1);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -471,7 +481,7 @@ void PageSettings::elmChanged(double val)
Score* s = preview->score();
s->style().set(Sid::pageEvenLeftMargin, val);
s->style().set(Sid::pagePrintableWidth, s->styleD(Sid::pageWidth) - evenPageRightMargin->value() * f - val);
updatePreview(0);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -491,7 +501,7 @@ void PageSettings::ermChanged(double val)
Score* s = preview->score();
s->style().set(Sid::pagePrintableWidth, s->styleD(Sid::pageWidth) - s->styleD(Sid::pageEvenLeftMargin) - val);
s->style().set(Sid::pageOddLeftMargin, val);
updatePreview(0);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -503,7 +513,7 @@ void PageSettings::ebmChanged(double val)
if (mmUnit)
val /= INCH;
preview->score()->style().set(Sid::pageEvenBottomMargin, val);
updatePreview(1);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -516,7 +526,7 @@ void PageSettings::spatiumChanged(double val)
double oldVal = preview->score()->spatium();
preview->score()->setSpatium(val);
preview->score()->spatiumChanged(oldVal, val);
updatePreview(0);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -526,7 +536,7 @@ void PageSettings::spatiumChanged(double val)
void PageSettings::pageOffsetChanged(int val)
{
preview->score()->setPageNumberOffset(val-1);
updatePreview(0);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -544,7 +554,7 @@ void PageSettings::pageHeightChanged(double val)
preview->score()->style().set(Sid::pageHeight, val);
preview->score()->style().set(Sid::pageWidth, val2);

updatePreview(1);
updatePreview();
}

//---------------------------------------------------------
Expand All @@ -562,24 +572,17 @@ void PageSettings::pageWidthChanged(double val)
preview->score()->style().set(Sid::pageWidth, val);
preview->score()->style().set(Sid::pageHeight, val2);
preview->score()->style().set(Sid::pagePrintableWidth, val - (oddPageLeftMargin->value() + evenPageLeftMargin->value()) * f);
updatePreview(0);
updatePreview();
}

//---------------------------------------------------------
// updatePreview
//---------------------------------------------------------

void PageSettings::updatePreview(int val)
void PageSettings::updatePreview()
{
updateValues();
switch(val) {
case 0:
preview->score()->doLayout();
break;
case 1:
preview->score()->doLayout();
break;
}
preview->score()->doLayout();
preview->layoutChanged();
}
}
Expand Down
3 changes: 2 additions & 1 deletion mscore/pagesettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,15 @@ class PageSettings : public AbstractDialog, private Ui::PageSettingsBase {

Navigator* preview;
bool mmUnit;
bool _changeFlag;
Score* cs;
Score* clonedScore;

// std::unique_ptr<Score> clonedScoreForNavigator;

virtual void hideEvent(QHideEvent*);
void updateValues();
void updatePreview(int);
void updatePreview();
void blockSignals(bool);
void applyToScore(Score*);
void setMarginsMax(double);
Expand Down

0 comments on commit 001c34c

Please sign in to comment.