File tree Expand file tree Collapse file tree 4 files changed +18
-11
lines changed Expand file tree Collapse file tree 4 files changed +18
-11
lines changed Original file line number Diff line number Diff line change @@ -246,7 +246,6 @@ void KeySig::layout()
246
246
}
247
247
248
248
// compute bbox
249
- setbbox (QRectF ());
250
249
for (KeySym& ks : keySymbols) {
251
250
ks.pos = ks.spos * _spatium;
252
251
addbbox (symBbox (ks.sym ).translated (ks.pos ));
@@ -334,7 +333,7 @@ void KeySig::write(Xml& xml) const
334
333
xml.tag (" custom" , _sig.customType ());
335
334
for (const KeySym& ks: keySymbols) {
336
335
xml.stag (" KeySym" );
337
- xml.tag (" sym" , int (ks.sym ));
336
+ xml.tag (" sym" , Sym::id2name (ks.sym ));
338
337
xml.tag (" pos" , ks.spos );
339
338
xml.etag ();
340
339
}
@@ -362,8 +361,14 @@ void KeySig::read(XmlReader& e)
362
361
KeySym ks;
363
362
while (e.readNextStartElement ()) {
364
363
const QStringRef& tag (e.name ());
365
- if (tag == " sym" )
366
- ks.sym = SymId (e.readInt ());
364
+ if (tag == " sym" ) {
365
+ QString val (e.readElementText ());
366
+ bool valid;
367
+ SymId id = SymId (val.toInt (&valid));
368
+ if (!valid)
369
+ id = Sym::name2id (val);
370
+ ks.sym = id;
371
+ }
367
372
else if (tag == " pos" )
368
373
ks.spos = e.readPoint ();
369
374
else
Original file line number Diff line number Diff line change @@ -1525,7 +1525,8 @@ void Score::addSystemHeader(Measure* m, bool isFirstSystem)
1525
1525
switch (el->type ()) {
1526
1526
case Element::Type::KEYSIG:
1527
1527
keysig = static_cast <KeySig*>(el);
1528
- keysig->changeKeySigEvent (keyIdx);
1528
+ if (!keysig->isCustom ())
1529
+ keysig->changeKeySigEvent (keyIdx);
1529
1530
break ;
1530
1531
case Element::Type::CLEF:
1531
1532
clef = static_cast <Clef*>(el);
@@ -1554,7 +1555,7 @@ void Score::addSystemHeader(Measure* m, bool isFirstSystem)
1554
1555
}
1555
1556
else if (!needKeysig && keysig)
1556
1557
undoRemoveElement (keysig);
1557
- else if (keysig && keysig->keySigEvent () != keyIdx)
1558
+ else if (keysig && !keysig-> isCustom () && keysig->keySigEvent () != keyIdx)
1558
1559
undo (new ChangeKeySig (keysig, keyIdx, keysig->showCourtesy ()));
1559
1560
1560
1561
bool needClef = isFirstSystem || styleB (StyleIdx::genClef);
Original file line number Diff line number Diff line change @@ -2085,7 +2085,7 @@ void Measure::read(XmlReader& e, int staffIdx)
2085
2085
ks->setTrack (e.track ());
2086
2086
ks->read (e);
2087
2087
int curTick = e.tick ();
2088
- if (ks->key () == Key::C && curTick == 0 ) {
2088
+ if (!ks-> isCustom () && ks->key () == Key::C && curTick == 0 ) {
2089
2089
// ignore empty key signature
2090
2090
qDebug (" remove keysig c at tick 0" );
2091
2091
delete ks;
Original file line number Diff line number Diff line change @@ -2467,11 +2467,12 @@ void KeySigView::setElement(Element* e)
2467
2467
KeySig* ks = static_cast <KeySig*>(e);
2468
2468
ShowElementBase::setElement (e);
2469
2469
2470
+ KeySigEvent ev = ks->keySigEvent ();
2470
2471
keysig.showCourtesySig ->setChecked (ks->showCourtesy ());
2471
- keysig.accidentalType ->setValue (int (ks-> keySigEvent () .key ()));
2472
- keysig.customType ->setValue (ks-> keySigEvent () .customType ());
2473
- keysig.custom ->setChecked (ks-> keySigEvent () .custom ());
2474
- keysig.invalid ->setChecked (ks-> keySigEvent () .invalid ());
2472
+ keysig.accidentalType ->setValue (int (ev .key ()));
2473
+ keysig.customType ->setValue (ev .customType ());
2474
+ keysig.custom ->setChecked (ev .custom ());
2475
+ keysig.invalid ->setChecked (ev .invalid ());
2475
2476
}
2476
2477
2477
2478
// ---------------------------------------------------------
You can’t perform that action at this time.
0 commit comments