Generate courtesy signature if next system has a local time signature on any staff

• Sep 17, 2019 - 02:52
Reported version
3.2
Type
Functional
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
closed
Regression
No
Workaround
No
Project

Create a score with more than one instrument, in the first measure of the second system put a local time signature in the second staff, and there's no courtesy time signature generated at the end of the first system.


Comments

It's just so weird, so so weird...
A breakpoint test shows that in libmscore/edit.cpp line 4224 does break when adding local time signature (whatever staff), but line 4233 doesn't, which I believe means the conditional sentence is false. Between lines 4224 and 4277 the function cannot possibly return if lines 4233 to 4274 are skipped, but line 4277 doesn't break. Why on earth can this happen?

Why should it break after the if?

      if (et == ElementType::FINGERING
         || (et == ElementType::IMAGE  && !element->parent()->isSegment())
         || (et == ElementType::SYMBOL && !element->parent()->isSegment())
         || et == ElementType::NOTE
         || et == ElementType::TEXT
         || et == ElementType::GLISSANDO
         || et == ElementType::BEND
         || (et == ElementType::CHORD && toChord(element)->isGrace())
            ) {

Ah, I see, in that case it should hit a breakpoint at 4277

In reply to by ABL

Title Adding local time signature in the first measure in the system in a staff other than the first one doesn't add courtesy signature at the end of the previous system Generate courtesy signature if next system have local time signature on any staff

You mean element(0)? Does that mean staff no.0?

In reply to by Howard-C

From what I understand, practically yes, see here: https://github.com/musescore/MuseScore/blob/436ec48541eaa2b6fee860ba308…
To be precise, it refers to the first voice of the first staff.
Each track is one voice, so each staff contains 4 tracks; the total number of tracks in a score is nstaves * VOICES, where nstaves is the total number of staves and VOICES (a constant =4) is the number of voices per staff.

Title Generate courtesy signature if next system have local time signature on any staff Generate courtesy signature if next system has a local time signature on any staff
Status PR created fixed

Fixed in branch master, commit 4bd390e7a1

_fix #294580: generate courtesy signature if next system has a local time signature on any staff

Resolves: https://musescore.org/node/294580.

Right now a courtesy time signature only generates if the local time signature is on the first staff, because the code only checks for the first track. The fix checks for all tracks._

Fix version
3.3.0