diff --git a/src/engraving/libmscore/edit.cpp b/src/engraving/libmscore/edit.cpp index 1f922bab84..22c150a4e0 100644 --- a/src/engraving/libmscore/edit.cpp +++ b/src/engraving/libmscore/edit.cpp @@ -622,7 +622,7 @@ TextBase* Score::addText(TextStyleType type, bool addToAllScores) if (!chordRest) { break; } - textBox = new StaffText(this->dummy()->segment(), TextStyleType::STAFF); + textBox = Factory::createStaffText(this->dummy()->segment(), TextStyleType::STAFF); chordRest->undoAddAnnotation(textBox); break; } @@ -640,7 +640,7 @@ TextBase* Score::addText(TextStyleType type, bool addToAllScores) if (!chordRest) { break; } - textBox = new StaffText(this->dummy()->segment(), TextStyleType::EXPRESSION); + textBox = Factory::createStaffText(this->dummy()->segment(), TextStyleType::EXPRESSION); textBox->setPlacement(PlacementV::BELOW); textBox->setPropertyFlags(Pid::PLACEMENT, PropertyFlags::UNSTYLED); chordRest->undoAddAnnotation(textBox); diff --git a/src/engraving/libmscore/factory.cpp b/src/engraving/libmscore/factory.cpp index 0a7102f314..853f1a0ad4 100644 --- a/src/engraving/libmscore/factory.cpp +++ b/src/engraving/libmscore/factory.cpp @@ -627,6 +627,16 @@ CREATE_ITEM_IMPL(StaffState, ElementType::STAFF_STATE, EngravingItem, setupAcces CREATE_ITEM_IMPL(StaffTypeChange, ElementType::STAFFTYPE_CHANGE, MeasureBase, setupAccessible) MAKE_ITEM_IMPL(StaffTypeChange, MeasureBase) +StaffText* Factory::createStaffText(Segment * parent, Ms::TextStyleType textStyleType, bool setupAccessible) +{ + StaffText* staffText = new StaffText(parent, textStyleType); + if (setupAccessible) { + staffText->setupAccessible(); + } + + return staffText; +} + CREATE_ITEM_IMPL(Stem, ElementType::STEM, Chord, setupAccessible) COPY_ITEM_IMPL(Stem) diff --git a/src/engraving/libmscore/factory.h b/src/engraving/libmscore/factory.h index d7572a5f6a..f4b179179b 100644 --- a/src/engraving/libmscore/factory.h +++ b/src/engraving/libmscore/factory.h @@ -149,6 +149,9 @@ public: static Ms::StaffTypeChange* createStaffTypeChange(Ms::MeasureBase* parent, bool setupAccessible = true); static std::shared_ptr makeStaffTypeChange(Ms::MeasureBase* parent); + static Ms::StaffText* createStaffText(Ms::Segment* parent, Ms::TextStyleType textStyleType = TextStyleType::STAFF, + bool setupAccessible = true); + static Ms::Stem* createStem(Ms::Chord* parent, bool setupAccessible = true); static Ms::Stem* copyStem(const Ms::Stem& src); diff --git a/src/engraving/rw/compat/read114.cpp b/src/engraving/rw/compat/read114.cpp index 5803cccfe2..e7c19a50e2 100644 --- a/src/engraving/rw/compat/read114.cpp +++ b/src/engraving/rw/compat/read114.cpp @@ -1933,7 +1933,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e, ReadContext& ctx } } else if (tag == "Text") { segment = m->getSegment(SegmentType::ChordRest, e.tick()); - StaffText* t = new StaffText(segment); + StaffText* t = Factory::createStaffText(segment); t->setTrack(e.track()); readStaffText(t, e); if (t->empty()) { @@ -1957,7 +1957,7 @@ static void readMeasure(Measure* m, int staffIdx, XmlReader& e, ReadContext& ctx segment->add(t); } else if (tag == "StaffText") { segment = m->getSegment(SegmentType::ChordRest, e.tick()); - StaffText* t = new StaffText(segment); + StaffText* t = Factory::createStaffText(segment); t->setTrack(e.track()); readStaffText(t, e); segment->add(t); diff --git a/src/engraving/rw/compat/read206.cpp b/src/engraving/rw/compat/read206.cpp index 0e86aa225e..7827a62e9f 100644 --- a/src/engraving/rw/compat/read206.cpp +++ b/src/engraving/rw/compat/read206.cpp @@ -2774,7 +2774,7 @@ static void readMeasure206(Measure* m, int staffIdx, XmlReader& e, ReadContext& || styleName == "Volta") { // TODO: is it possible to get it from style? t = new SystemText(ctx.dummy()->segment()); } else { - t = new StaffText(ctx.dummy()->segment()); + t = Factory::createStaffText(ctx.dummy()->segment()); } t->setTrack(e.track()); readTextPropertyStyle206(tctx.tag(), e, t, t); diff --git a/src/engraving/rw/measurerw.cpp b/src/engraving/rw/measurerw.cpp index 8a73f93b21..f25ed9b027 100644 --- a/src/engraving/rw/measurerw.cpp +++ b/src/engraving/rw/measurerw.cpp @@ -411,7 +411,7 @@ void MeasureRW::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, int } } else if (tag == "Text") { segment = measure->getSegment(SegmentType::ChordRest, e.tick()); - StaffText* t = new StaffText(segment); + StaffText* t = Factory::createStaffText(segment); t->setTrack(e.track()); t->read(e); if (t->empty()) { diff --git a/src/importexport/capella/internal/capella.cpp b/src/importexport/capella/internal/capella.cpp index e858d02272..de4fcdf7de 100644 --- a/src/importexport/capella/internal/capella.cpp +++ b/src/importexport/capella/internal/capella.cpp @@ -287,7 +287,7 @@ static void processBasicDrawObj(QList objects, Segment* s, int tr break; } } - TextBase* text = new StaffText(s); + TextBase* text = Factory::createStaffText(s); QFont f(st->font()); text->setFamily(f.family()); text->setItalic(f.italic()); diff --git a/src/importexport/guitarpro_old/internal/importgtp-gp4.cpp b/src/importexport/guitarpro_old/internal/importgtp-gp4.cpp index 14691c503e..4accec07f7 100644 --- a/src/importexport/guitarpro_old/internal/importgtp-gp4.cpp +++ b/src/importexport/guitarpro_old/internal/importgtp-gp4.cpp @@ -772,7 +772,7 @@ bool GuitarPro4::read(QFile* fp) if (capo > 0) { Segment* s = measure->getSegment(SegmentType::ChordRest, measure->tick()); - StaffText* st = new StaffText(s); + StaffText* st = Factory::createStaffText(s); st->setPlainText(QString("Capo. fret ") + QString::number(capo)); st->setTrack(i * VOICES); s->add(st); diff --git a/src/importexport/guitarpro_old/internal/importgtp-gp5.cpp b/src/importexport/guitarpro_old/internal/importgtp-gp5.cpp index 41e24b0d2a..1d48c2ca75 100644 --- a/src/importexport/guitarpro_old/internal/importgtp-gp5.cpp +++ b/src/importexport/guitarpro_old/internal/importgtp-gp5.cpp @@ -115,7 +115,7 @@ int GuitarPro5::readBeatEffects(int track, Segment* segment) readTremoloBar(track, segment); // readBend(); } if (fxBits2 & 0x01) { // Rasgueado effect - StaffText* st = new StaffText(score->dummy()->segment()); + StaffText* st = Factory::createStaffText(score->dummy()->segment()); st->setXmlText("rasg."); st->setParent(segment); st->setTrack(track); @@ -571,7 +571,7 @@ bool GuitarPro5::readTracks() if (capo > 0) { Segment* s = measure->getSegment(SegmentType::ChordRest, measure->tick()); - StaffText* st = new StaffText(s); + StaffText* st = Factory::createStaffText(s); st->setPlainText(QString("Capo. fret ") + QString::number(capo)); st->setTrack(i * VOICES); s->add(st); @@ -927,7 +927,7 @@ bool GuitarPro5::read(QFile* fp) } } else { Segment* s = measure->getSegment(SegmentType::KeySig, measure->tick()); - StaffText* st = new StaffText(s); + StaffText* st = Factory::createStaffText(s); static constexpr char text[][22] = { "fine", "Da Capo", "D.C. al Coda", "D.C. al Double Coda", "D.C. al Fine", "Da Segno", "D.S. al Coda", "D.S. al Double Coda", diff --git a/src/importexport/guitarpro_old/internal/importgtp-gp6.cpp b/src/importexport/guitarpro_old/internal/importgtp-gp6.cpp index 022603e7e0..1ed93a3764 100644 --- a/src/importexport/guitarpro_old/internal/importgtp-gp6.cpp +++ b/src/importexport/guitarpro_old/internal/importgtp-gp6.cpp @@ -1505,7 +1505,7 @@ Fraction GuitarPro6::readBeats(QString beats, GPPartInfo* partInfo, Measure* mea } } if (!t && !text.isEmpty()) { - StaffText* s = new StaffText(segment); + StaffText* s = Factory::createStaffText(segment); s->setPlainText(text); s->setTrack(track); segment->add(s); @@ -2136,7 +2136,7 @@ void GuitarPro6::readMasterBars(GPPartInfo* partInfo) // no text for two consecutive freetime timesig if (!previousFreeTime) { s = m->getSegment(SegmentType::ChordRest, measure->tick()); - StaffText* st = new StaffText(s); + StaffText* st = Factory::createStaffText(s); st->setXmlText("Free time"); st->setParent(s); st->setTrack(stave); @@ -2160,7 +2160,7 @@ void GuitarPro6::readMasterBars(GPPartInfo* partInfo) if (!bars[measureCounter].direction.compare("Fine") || (bars[measureCounter].direction.compare("") && !bars[measureCounter].directionStyle.compare("Jump"))) { Segment* s = measure->getSegment(SegmentType::KeySig, measure->tick()); - StaffText* st = new StaffText(s); + StaffText* st = Factory::createStaffText(s); if (!bars[measureCounter].direction.compare("Fine")) { st->setXmlText("fine"); } else if (!bars[measureCounter].direction.compare("DaCapo")) { diff --git a/src/importexport/guitarpro_old/internal/importgtp.cpp b/src/importexport/guitarpro_old/internal/importgtp.cpp index 854777afda..d9b2f6129a 100644 --- a/src/importexport/guitarpro_old/internal/importgtp.cpp +++ b/src/importexport/guitarpro_old/internal/importgtp.cpp @@ -1681,7 +1681,7 @@ bool GuitarPro2::read(QFile* fp) if (capo > 0) { Segment* s = measure->getSegment(SegmentType::ChordRest, measure->tick()); - StaffText* st = new StaffText(s); + StaffText* st = Factory::createStaffText(s); // st->setTextStyleType(TextStyleType::STAFF); st->setPlainText(QString("Capo. fret ") + QString::number(capo)); st->setTrack(i * VOICES); @@ -2397,7 +2397,7 @@ bool GuitarPro3::read(QFile* fp) if (capo > 0) { Segment* s = measure->getSegment(SegmentType::ChordRest, measure->tick()); - StaffText* st = new StaffText(s); + StaffText* st = Factory::createStaffText(s); // st->setTextStyleType(TextStyleType::STAFF); st->setPlainText(QString("Capo. fret ") + QString::number(capo)); st->setTrack(i * VOICES); diff --git a/src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp b/src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp index 1ee3c95341..4f2976f795 100644 --- a/src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp +++ b/src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp @@ -2587,7 +2587,7 @@ void MusicXMLParserDirection::direction(const QString& partId, } } else { if (_wordsText != "" || _metroText != "") { - t = new StaffText(_score->dummy()->segment()); + t = Factory::createStaffText(_score->dummy()->segment()); t->setXmlText(_wordsText + _metroText); } else { t = new RehearsalMark(_score->dummy()->segment());