void KeySig::changeKeySigEvent(const KeySigEvent& t) { if (_sig == t) return; if (t.custom()) { KeySig* ks = _score->customKeySig(t.customType()); if (!ks) return; keySymbols = ks->keySymbols; } setKeySigEvent(t); }
void AccidentalState::init(const KeySigEvent& keySig, ClefType clef) { if (keySig.custom()) { memset(state, 2, MAX_ACC_STATE); for (const KeySym& s : keySig.keySymbols()) { AccidentalVal a = sym2accidentalVal(s.sym); int line = int(s.spos.y() * 2); int idx = relStep(line, clef) % 7; for (int octave = 0; octave < (11 * 7); octave += 7) { int i = idx + octave ; if (i >= MAX_ACC_STATE) break; state[i] = int(a) + 2; } } } else { init(keySig.key()); } }
Element* KeySig::drop(const DropData& data) { KeySig* ks = static_cast<KeySig*>(data.element); if (ks->type() != Element::Type::KEYSIG) { delete ks; return 0; } KeySigEvent k = ks->keySigEvent(); if (k.custom() && (score()->customKeySigIdx(ks) == -1)) score()->addCustomKeySig(ks); else delete ks; if (data.modifiers & Qt::ControlModifier) { // apply only to this stave if (k != keySigEvent()) score()->undoChangeKeySig(staff(), tick(), k.key()); } else { // apply to all staves: foreach(Staff* s, score()->rootScore()->staves()) score()->undoChangeKeySig(s, tick(), k.key()); } return this; }