void EditStaff::apply() { Score* score = staff->score(); Part* part = staff->part(); int intervalIdx = iList->currentIndex(); bool upFlag = up->isChecked(); Interval interval = intervalList[intervalIdx]; interval.diatonic += octave->value() * 7; interval.chromatic += octave->value() * 12; if (!upFlag) interval.flip(); instrument.setTranspose(interval); instrument.setMinPitchA(_minPitchA); instrument.setMaxPitchA(_maxPitchA); instrument.setMinPitchP(_minPitchP); instrument.setMaxPitchP(_maxPitchP); instrument.setShortName(QTextDocumentFragment(shortName->document())); instrument.setLongName(QTextDocumentFragment(longName->document())); bool s = small->isChecked(); bool inv = invisible->isChecked(); qreal userDist = spinExtraDistance->value(); QColor col = color->color(); int staffIdx = staffType->itemData(staffType->currentIndex()).toInt(); StaffType* st = score->staffType(staffIdx); // before changing instrument, check if notes need to be updated // true if changing into or away from TAB or from one TAB type to another StaffGroup ng = st->group(); // new staff group StaffGroup og = staff->staffType()->group(); // old staff group bool updateNeeded = (ng == TAB_STAFF_GROUP && og != TAB_STAFF_GROUP) || (ng != TAB_STAFF_GROUP && og == TAB_STAFF_GROUP) || (ng == TAB_STAFF_GROUP && og == TAB_STAFF_GROUP && instrument.stringData() != part->instr()->stringData()); if (!(instrument == *part->instr()) || part->partName() != partName->text()) { score->undo(new ChangePart(part, instrument, partName->text())); emit instrumentChanged(); } if (s != staff->small() || inv != staff->invisible() || userDist != staff->userDist() || st != staff->staffType() || col != staff->color()) score->undo(new ChangeStaff(staff, s, inv, userDist * score->spatium(), col, st)); if (updateNeeded) score->cmdUpdateNotes(); score->setLayoutAll(true); score->update(); }