Fix #275659: Redundant undo entries

This commit is contained in:
Niels Erik Gjødsbøl Nielsen 2018-10-28 15:49:35 +01:00 committed by Dmitri Ovodok
parent 42da9ca6d2
commit 001c34c1b0
2 changed files with 33 additions and 29 deletions

View file

@ -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);
@ -110,7 +111,8 @@ void PageSettings::setScore(Score* s)
preview->setScore(clonedScore);
buttonApplyToAllParts->setEnabled(!cs->isMaster());
updateValues();
updatePreview(0);
updatePreview();
_changeFlag = false;
}
//---------------------------------------------------------
@ -222,6 +224,7 @@ void PageSettings::updateValues()
pageOffsetEntry->setValue(score->pageNumberOffset() + 1);
blockSignals(false);
_changeFlag = true;
}
//---------------------------------------------------------
@ -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();
}
//---------------------------------------------------------
@ -271,7 +274,7 @@ void PageSettings::twosidedToggled(bool flag)
{
preview->score()->style().set(Sid::pageTwosided, flag);
updateValues();
updatePreview(1);
updatePreview();
}
//---------------------------------------------------------
@ -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;
}
//---------------------------------------------------------
@ -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;
@ -312,8 +319,6 @@ void PageSettings::applyToScore(Score* s)
s->spatiumChanged(oldSpatium, newSpatium);
s->undoChangePageNumberOffset(pageOffsetEntry->value() - 1);
s->endCmd();
}
//---------------------------------------------------------
@ -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;
}
//---------------------------------------------------------
@ -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();
}
}
@ -376,7 +386,7 @@ void PageSettings::otmChanged(double val)
if (mmUnit)
val /= INCH;
preview->score()->style().set(Sid::pageOddTopMargin, val);
updatePreview(1);
updatePreview();
}
//---------------------------------------------------------
@ -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();
}
//---------------------------------------------------------
@ -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();
}
//---------------------------------------------------------
@ -439,7 +449,7 @@ void PageSettings::obmChanged(double val)
if (mmUnit)
val /= INCH;
preview->score()->style().set(Sid::pageOddBottomMargin, val);
updatePreview(1);
updatePreview();
}
//---------------------------------------------------------
@ -451,7 +461,7 @@ void PageSettings::etmChanged(double val)
if (mmUnit)
val /= INCH;
preview->score()->style().set(Sid::pageEvenTopMargin, val);
updatePreview(1);
updatePreview();
}
//---------------------------------------------------------
@ -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();
}
//---------------------------------------------------------
@ -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();
}
//---------------------------------------------------------
@ -503,7 +513,7 @@ void PageSettings::ebmChanged(double val)
if (mmUnit)
val /= INCH;
preview->score()->style().set(Sid::pageEvenBottomMargin, val);
updatePreview(1);
updatePreview();
}
//---------------------------------------------------------
@ -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();
}
//---------------------------------------------------------
@ -526,7 +536,7 @@ void PageSettings::spatiumChanged(double val)
void PageSettings::pageOffsetChanged(int val)
{
preview->score()->setPageNumberOffset(val-1);
updatePreview(0);
updatePreview();
}
//---------------------------------------------------------
@ -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();
}
//---------------------------------------------------------
@ -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();
}
}

View file

@ -31,6 +31,7 @@ class PageSettings : public AbstractDialog, private Ui::PageSettingsBase {
Navigator* preview;
bool mmUnit;
bool _changeFlag;
Score* cs;
Score* clonedScore;
@ -38,7 +39,7 @@ class PageSettings : public AbstractDialog, private Ui::PageSettingsBase {
virtual void hideEvent(QHideEvent*);
void updateValues();
void updatePreview(int);
void updatePreview();
void blockSignals(bool);
void applyToScore(Score*);
void setMarginsMax(double);