@@ -430,8 +430,6 @@ void MeasureRead::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, in
430
430
TRead::read (expr, e, ctx);
431
431
segment->add (expr);
432
432
} else if (tag == " Harmony" ) {
433
- // hack - getSegment needed because tick tags are unreliable in 1.3 scores
434
- // for symbols attached to anything but a measure
435
433
segment = measure->getSegment (SegmentType::ChordRest, ctx.tick ());
436
434
Harmony* el = Factory::createHarmony (segment);
437
435
@@ -442,8 +440,6 @@ void MeasureRead::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, in
442
440
}
443
441
segment->add (el);
444
442
} else if (tag == " FretDiagram" ) {
445
- // hack - getSegment needed because tick tags are unreliable in 1.3 scores
446
- // for symbols attached to anything but a measure
447
443
segment = measure->getSegment (SegmentType::ChordRest, ctx.tick ());
448
444
FretDiagram* el = Factory::createFretDiagram (segment);
449
445
@@ -454,8 +450,6 @@ void MeasureRead::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, in
454
450
}
455
451
segment->add (el);
456
452
} else if (tag == " TremoloBar" ) {
457
- // hack - getSegment needed because tick tags are unreliable in 1.3 scores
458
- // for symbols attached to anything but a measure
459
453
segment = measure->getSegment (SegmentType::ChordRest, ctx.tick ());
460
454
TremoloBar* el = Factory::createTremoloBar (segment);
461
455
el->setTrack (ctx.track ());
@@ -465,8 +459,6 @@ void MeasureRead::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, in
465
459
}
466
460
segment->add (el);
467
461
} else if (tag == " Symbol" ) {
468
- // hack - getSegment needed because tick tags are unreliable in 1.3 scores
469
- // for symbols attached to anything but a measure
470
462
segment = measure->getSegment (SegmentType::ChordRest, ctx.tick ());
471
463
Symbol* el = Factory::createSymbol (segment);
472
464
@@ -477,9 +469,7 @@ void MeasureRead::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, in
477
469
}
478
470
segment->add (el);
479
471
} else if (tag == " Tempo" ) {
480
- // hack - getSegment needed because tick tags are unreliable in 1.3 scores
481
- // for symbols attached to anything but a measure
482
- segment = measure->getSegment (SegmentType::ChordRest, ctx.tick ());
472
+ segment = measure->getChordRestOrTimeTickSegment (ctx.tick ());
483
473
TempoText* el = Factory::createTempoText (segment);
484
474
485
475
el->setTrack (ctx.track ());
@@ -489,9 +479,7 @@ void MeasureRead::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, in
489
479
}
490
480
segment->add (el);
491
481
} else if (tag == " StaffText" ) {
492
- // hack - getSegment needed because tick tags are unreliable in 1.3 scores
493
- // for symbols attached to anything but a measure
494
- segment = measure->getSegment (SegmentType::ChordRest, ctx.tick ());
482
+ segment = measure->getChordRestOrTimeTickSegment (ctx.tick ());
495
483
StaffText* el = Factory::createStaffText (segment);
496
484
el->setTrack (ctx.track ());
497
485
TRead::read (el, e, ctx);
@@ -510,10 +498,12 @@ void MeasureRead::readVoice(Measure* measure, XmlReader& e, ReadContext& ctx, in
510
498
|| tag == " FiguredBass"
511
499
|| tag == " HarpPedalDiagram"
512
500
) {
513
- // hack - getSegment needed because tick tags are unreliable in 1.3 scores
514
- // for symbols attached to anything but a measure
515
- segment = measure->getSegment (SegmentType::ChordRest, ctx.tick ());
516
- EngravingItem* el = Factory::createItemByName (tag, segment);
501
+ EngravingItem* el = Factory::createItemByName (tag, ctx.dummy ());
502
+ if (el->allowTimeAnchor ()) {
503
+ segment = measure->getChordRestOrTimeTickSegment (ctx.tick ());
504
+ } else {
505
+ segment = measure->getSegment (SegmentType::ChordRest, ctx.tick ());
506
+ }
517
507
518
508
el->setTrack (ctx.track ());
519
509
TRead::readItem (el, e, ctx);
0 commit comments