Resolves: https://musescore.org/en/node/316754.
When #4359 attempted to fix https://musescore.org/en/node/278068 (and was shortly followed up by #4364), the end result was that when a newline is inserted into a text block (causing it to split into two text blocks), the second text block would always end with a newline, even if the original text block did not. This is fixed here by setting the second text block's EOL flag to that of the original text block.
This is what is attempted by the function that joins two text blocks when a newline is deleted, but that function wasn't getting it right either. So that has been corrected here as well.
Taken together, these two errors meant that there would be a blank line at the end of any text element that had ever contained a newline. This blank line would be small, but it would always be present, even if you tried to delete it.
Because this blank was always present in multiline text elements, and because it was small enough to not attract much attention, #5881 only added an empty text fragment before a newline, and not after. But now that we do not have to have unwanted newline characters, in order to preserve the font size on a blank line, an empty text fragment may be needed after a newline also.
MMRests:
- Add vtests for old-style (all fonts), h-bar thickness and margin (Bravura)
MeasureRepeats:
- Add script tests for adding, cutting/copying with partial group selected, pasting into group, repeating selection from before group, executing split/join/insert/delete measure commands, adding repeat barlines, and adding time signature
- Add mtests for parts, MIDI, and MusicXML import/export
- Add vtests
- Update ref files
and fix compatibility problems with 3.x scores prior to this PR
using the no longer existing `ornamentMordentInverted` by turning it
into the new `ornamentMordent`. and changing the old `ornamentMordent`
into `ornamentShortTrill` for pre-MuseScore 3.6 scores.
Fix the vtest and mtests too
Actually update to include some post-1.3 fixes too
Resolves: https://musescore.org/en/node/300693
Continuation lines are drawn to the right edge of the last note
that starts before the end of the figure's duration.
The code that finds this note was only looking in voice 1.
That resulted in continuation lines ending short, or disappearing,
if the last note was in another voice.
Fix is to be sure to check all voices when searchiing for the end CR.
Resolves: https://musescore.org/en/node/298273
System dividers were not being displayed in certain cases:
if a fixed spacer is used, or in single page view.
In addition, dividers were displaying that shouldn't be
if layout changes and a system that was formerly not last on page
suddenly becomes last on page,
This is due to a series of errors in layoutPage()
where the dividers are managed.
This fix involves a number of aspects:
1) checkDivider now takes an extra boolean parameter to force deletion
2) we always call checkDivider with that parameter set to true
for the last system of a page
3) in the case where we don't stretch system distance
(the clause checking sList, noVerticalStretch, or System layout mode),
don't just remove dividers, but do the normal checkDivider call,
which adds or removes dividers as appropriate
4) in the calls to checkDivider at the end of the function
(which handle the normal case of non-final systems on the page),
dion't skip the checkDivider calls if a system hasFixedDownDistance.
I believe that check was added because it is appropriate in other places
that also check vBox, so it may have looked like this code should match.
But it shouldn't, there is no reason to skip dividers in this case.
Only the stretch calculations should be skipped.
Resolves: https://musescore.org/en/node/281253
A staff spacer on the bottom system of a page does not work correctly:
we are looking foir a spacer on the *first* staff rather than the *last*.
So a spacer on the last staff is ignored, and one on the first is used
when it shouldn't be.
The code to calculate the amount of spacer required below the last
system of a page relies on System::lastVisibleSysStaff(),
which is return the correct SysStaff, but we are then attempting
to access the idx member, which has never been set up and is always 0.
Fix is to initialize idx when setting up the list of staves.
Resolves: https://musescore.org/en/node/295892
If a measure is followed by a horizontal frame and then a measure with a start repeat,
the end barline of the first measure is not displayed.
This is because we are optiizing that away thinking it won't be needed
because we will simply use the start repeat of the next measure.
This would be true if not for the frame.
So I simply added a check to make sure the next measure is the same as the next measurebase,
and clarified the comments.
The bend symbol displays in the palette using
a "random" (first in alphabetical order) font.
This is simply because the bendStyle fails to set up
the association between Sid::bendFontFace and Pid::FONT_FACE.
It seems this line was inadvertently removed
when we made the change to merge italic/bold/underline into style.
It sometimes comes up that the best way to solve some particular problem
would be to attach a symbol to a barline
(eg, think about the commonly-requested multimeasure repeat symbol).
But we don't support symbols on barlines, so you end up settling for
attaching to the first note or rest in the bar then moving manually,
and this adjustment does not necessarily survicve layout changes.
This commit adds direct support for symbols on barlines.
Also images, since the code involved is so similar, they are handled here as well.
Symbols and images are recorded as child elements,
which were already being laid out so no special handling was needed
beyond adding & removing, reading nd writing.
Although I did need to make sure the track & score were managed correctly.