The issue has two parts:
1) If a linked element belongs not to the first MM rest measure (e.g.
a BarLine), <linked> and <linkedMain> tags may have been written out
of a proper order.
2) If several links bind pairs of elements in the same score at the
same tick, these linkes may have been not established properly on
score loading.
Both issues needs to be fixed to fix linking of elements in the case
described in the issue (MM rests split by a barline with text elements
attached), so both fixes are included to this commit.
- tick names a position on the time axis
- tick is always a Fraction()
- only Measure() and Segment() (and Tuplet?) have a tick value
- tick() for an generic element return only a sensible value if isMeasure() or isSegment() or isSegment(parent())
- "ticks" names a duration stored in a Fraction()
- the tick value for an Segment is relative to its measure
- rename "duration" to "ticks"
- rename afrac() to tick()
- rename rfrac() to rtick()
- rename some variables, changing "fraction" into "tick"
(example: actualFraction() into actualTicks())
- Lyrics ticks are written as Fraction, on read if xmlreader sees a "/" it reads a fraction
else midi ticks for backwards compatibility
Reading of freed memory occurred in ConnectorInfoReader::operator=
(via a connector() call) when removing the connector info from
connector info list. The previous implementation would also work
incorrectly in case of replacing QList to any vector container.
This commit includes also the following changes needed for correct
work of the changed links reading code:
- Correct current reading position when reading multimeasure rests
- Assign track number for Fingering while reading MSCX