@@ -238,6 +238,8 @@ void TRead::readItem(EngravingItem* item, XmlReader& xml, ReadContext& ctx)
238238 break ;
239239 case ElementType::LYRICS: read (item_cast<Lyrics*>(item), xml, ctx);
240240 break ;
241+ case ElementType::LYRICSLINE: read (item_cast<LyricsLine*>(item), xml, ctx);
242+ break ;
241243 case ElementType::MARKER: read (item_cast<Marker*>(item), xml, ctx);
242244 break ;
243245 case ElementType::MEASURE_NUMBER: read (item_cast<MeasureNumber*>(item), xml, ctx);
@@ -3108,6 +3110,15 @@ void TRead::read(Lyrics* l, XmlReader& e, ReadContext& ctx)
31083110 }
31093111}
31103112
3113+ void TRead::read (LyricsLine* l, XmlReader& e, ReadContext& ctx)
3114+ {
3115+ while (e.readNextStartElement ()) {
3116+ if (!readProperties (static_cast <SLine*>(l), e, ctx)) {
3117+ e.unknown ();
3118+ }
3119+ }
3120+ }
3121+
31113122void TRead::read (LineSegment* l, XmlReader& e, ReadContext& ctx)
31123123{
31133124 while (e.readNextStartElement ()) {
@@ -3145,6 +3156,13 @@ bool TRead::readProperties(Lyrics* l, XmlReader& e, ReadContext& ctx)
31453156 } else if (tag == " ticks_f" ) {
31463157 l->setTicks (e.readFraction ());
31473158 } else if (TRead::readProperty (l, tag, e, ctx, Pid::PLACEMENT)) {
3159+ } else if (tag == " LyricsLine" ) {
3160+ LyricsLine* ll = Factory::createLyricsLine (l);
3161+ TRead::read (ll, e, ctx);
3162+ ll->setParent (l);
3163+ ll->setTick (ctx.tick ());
3164+ l->setSeparator (ll);
3165+ ctx.score ()->addUnmanagedSpanner (ll);
31483166 } else if (!readProperties (static_cast <TextBase*>(l), e, ctx)) {
31493167 return false ;
31503168 }
@@ -3492,7 +3510,7 @@ void TRead::read(PartialLyricsLine* p, XmlReader& xml, ReadContext& ctx)
34923510 if (tag == " isEndMelisma" ) {
34933511 p->setIsEndMelisma (xml.readBool ());
34943512 } else if (TRead::readProperty (p, tag, xml, ctx, Pid::VERSE)) {
3495- } else if (!readItemProperties (p , xml, ctx)) {
3513+ } else if (!readProperties ( static_cast <SLine*>(p) , xml, ctx)) {
34963514 xml.unknown ();
34973515 }
34983516 }
0 commit comments