Improved the functionality of the playhead (a.k.a. the playback cursor) so that whenever the user selects an element, the playhead is automatically repositioned to the element's time position. Previously, this worked only for noteheads and rests, but it now works for note stems, beams, augmentation dots, accidentals, ties, slurs, articulations, time signatures, key signatures, clefs, tempo changes, dynamics, lines, barlines, breaks, spacers, measure numbers, text, and so on.
Special cases handled:
* Barlines. The playhead is moved to the start of the measure to the right of the barline, unless it's the last barline in either the entire score or the system, in which case the playhead is moved to the start of the measure to the left of the barline.
* Brackets always have a time position of zero, so the playhead is moved to the start of the first measure in the system that the bracket belongs to.
* Instrument names always have a time position of zero, so the playhead is moved to the start of the first measure in the system that the instrument name belongs to.
This issue reports two problems:
1) Broken tie for notes under the split pitch.
2) Corrupted file because of uncorrect split triplets.
This commit solves the first issue by creating a new Tie when for a note under
the split pitch a forward tie is detected. The patch temporarily saves the
new note and the old pitch in a map in which the old tied is used as key.
When this old tied note is detected, a new tie is created between the two new
notes and the old tie is removed.
The second issue is solved by creating tuplets in the splitted staff. This can
cause tuplets with only rest. These tuplets are not removed, this should
cleaned up by the Regroup Rhythms function. Unfortunately, this function
isn't able tuplet that well. But that's another issue which should be solved
there.
Resolves: https://musescore.org/en/node/301436
The accessibility navigation commands
(Alt+Left/Right, also Ctrl+Alt+Shift+Left/Right)
were not properly checking for mmrests,
resulting in selection of elements in the underlying measures
that were not valid in the current layout.
This adds the necessary checks.
Mostly just a matter of adding "MM" to various function calls.
In a couple of places, the appropriate function did not exist,
so I added it.
Also corrected errors in Ctrl+Alt+Shift+Left/Right
that occurs when going past the end of a staff,
the code to wrap around to the next staff this case well.
In part this is because the implementation of barlines changed
since the code was written.
Barlines are per-staff now even when spanned,
so the use and management of prevTrack is no longer appropriate.
* Found via `codespell -q 3 -S ./share/locale,./thirdparty -L ba,cann,clas,dur,foto,iff,nd,ois,ot,pres,possibile,snaped,strack,tage,te,uint,thru,valu`
* Some revisions made per feedback given during review.
* Follow-up typos for review
* Add revisions per feedback
This commit fixes the "Same duration" field's bug by adding an additional field - same note length. The original field matches note's `actualDurationType` and the new one matches the `actualTicks` value
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().
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
As playback is currently always performed for MasterScore, it would be
logical to store the information about positions of playback cursor and
loop markers in MasterScore rather than individual excerpt scores.
This commit implements this approach and fixes the issue with
inability to set loop markers from parts. Strictly speaking, only
changing Seq::setLoopSelection is absolutely necessary to fix the
issue, the approach with moving _pos to MasterScore allows to naturally
avoid incorrect visual feedback due to markers positions information
being not synchronized across scores and ScoreViews.
Why do these changes fix this particular issue?
After adding any other element, we `setLayout` at the element's
location. However, for boxes, there is an early return, and this step is
missed, meaning the box won't appear until a relevant measure is layed out.
This fix adds the missing `setLayout`.
- Remove disabled and largely outdated continuous view layout code
- Remove declarations of functions which have no definition
- Remove unused global libmscore variables
- Remove some excessive forward declarations