Was broken after 1a6058f9a1.
Score::extractLyrics() depends on Measure::_playbackCount values which
are used internally by RepeatList. A quick way to fix the issue with
extracting lyrics (implemented in this commit) is to force repeat list
to be computed before resetting playbackCount variables inside
extractLyrics().
- Workspaces are saved automatically after each change (prevents
possible data loss after MuseScore crashes);
- Read-only workspaces are automatically saved to different location
with "edited" suffix;
- Edited versions of Basic and Advanced workspace hide the default
ones.
But the ones related to deprecations in third-party libs
* Remove unused variables
* Prevent calling non-virtual destructors
* Prevent the warning "Moving a temporary object prevents copy elision" by removing std::move call
* disable "`register` is deprecated" warning related to the 3rd party code
The new way avoids deleting the old workspace file before creating
the new one which should potentially prevent data loss in case the
new file cannot be created.
Resolves: https://musescore.org/en/node/295531
In an earlier fix for a crash entering fingering with custom text style,
I introduced a change to how the textTab() function ("fingering mode") works,
so instead of creating a new text element with the same text style as the previous element
(which could conceivably be a user style),
we create one with the same text style as the *default* text style for that element,
and then change the text style later if needed.
This fails for sticking because it had no default text style.
So this change simply adds one, by overriding Sticking::propertyDefault().
The same previous bug fix also broke expression text a little,
because this is actually a staff text, and this process of first creating an element
with the default text style and then changing it ends up missing the placement property.
So you get an object with expression text style but palcement above.
I fix that by special-casing this combination - one of the few places
where we create a pseudo element type that is really just a different text style.
We formerly did this for system text, but it's a first class element now.
Also, RNA is just a different text style on chord symbol,
but that goes through a totally different code path, which works correctly already.
The original impelementation of bends was for tablature only
and had no need to handle notes above the staff.
Eventually standard staves were supported,
but no allowances were made for notes above the staff.
This changes simply adjusts the vertical position of the bend
to be as high above notes above the staff
as they are notes on the top line.
It's just a matter of forcing the notePos (used in both layout and drawing)
to be no less than zero.
For some reason, we place the text on prebends differently than others,
and while the code worked in 2.3.2, it no longer does,
and I think it has to do with changes made for screen scaling.
Fixing the screen scaling is possible but hard to test
and hard to guarantee it will be correct on all systems.
So instead, I am fixing this by changing the code that places the text
to use the same approach as other bends:
setitng the alignment to bottom center
rather than try to align ourselves using font metrics.
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.
In 3.0 - 3.0.5, it was not possible to change the Y position of lyrics.
You could try, and an offset would be recorded, but it would have no effect on layout.
Starting with 3.1, it became possible to change the Y position for lyrics.
For compatibility, we cleared the Y offset when reading 3.0 - 3.0.5 scores,
since it would have been ignored originally.
However, the code doing the version check fails in parts,
because mscoreVersion() returns an empty stirng in that case.
This change simply amends the check to use masterScore() rather than score(),
so parts no longer return an empty version,
and also adds an explicit check for the version being empty,
so the check works correctly in test mode,
where this field is often empty even for the master score.
Not focusing scoreview in this situation didn't lead to issues previously
since the old palettes weren't using keyboard navigation. New palettes
actively grab focus and handle keyboard input so setting focus to a
scoreview is required now to enable using palettes while editing a text.
Annotations are appended to the annotation list as they are entered.
This means they won't necessarily be sorted by track,
if you enter them onto staves in any order but top down.
The result is the navitgation code skips all annotations for a staff
after the first annotation it encounters on a different staff.
This commit fixes the issue by continuing to loop through the annotations,
looking for more on the same staff.
anatoly-os: rewrite the improvement from #5308 using `find_if`
anatoly-os: Did refactoring using `find_if` to make the code cleaner. Initial idea and implementation are authored by @MarcSabatella.
Rewrite ColorLabel to be a child of QPushButton instead of QFrame. The reason is that QFrame doesn't implement MouseClickEvent. That led to the issues when opening the colour picker widget on mousePressEvent.
I have to move `Awl::ColorLabel` `else if` statement checks above the `QPushButton` ones, because the latter set incorrect connects for the `ColorLabel` which inherits `QPushButton` now.
Resolves: https://musescore.org/node/295153.
Fermata uses a different cpp file than other articulations, so it is possible that this part of property read-and-writing was simply forgotten.