Horizontal Frame on system by itself at end of page causes previous system to disappear
Reported version
3.6
Type
Functional
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
closed
Regression
No
Workaround
No
Project
OS: macOS High Sierra (10.13)
Arch.: x86_64, MuseScore version (64-bit): 3.6.2.548020600
revision: 3224f34
Attached file is just before Step 4.
Step to Reproduce;
1.Create 1 page filled Treble clef score (33 measures and add system breaks every 4 measures)
2.Tick Enable vertical justification of staves via Format ->Style -> Page (it is by default)
3.Add Append Horizontal Frame via Add -> Frames
4.Click this Append Horizontal Frame and change Width to 71sp
Result;
Last two systems are pushed downward and overflowed on the page.
*It doesn’t happen when ticking Disable vertical justification of staves
Attachment | Size |
---|---|
frame.mscz | 7.69 KB |
Comments
I can confirm this. At that point the frame no longer fits on the system and should simply be moved down to the next system, but instead both systems simply disappear.
There is no real point to such a frame anyhow, but I could see this happening accidentally for sure.
There might be the need for such a frame for e.g. Lyrics, esp. if you want a columns layout and so can't use a Text Frame
Or for a trailing image
Or to prevent the verticial alignment to happen on the last page of a score
Edit: oops, I missread, and meant a vertical frame...
The max. width before this happens of course depends on the content and number of the measures in the same same system
RIght, I can think of reasons for text or vertical frames at the end of a score, but not a horizontal system all by itself.
Not one of that size at least. In general it might be wanted to 'prematurely' end the system, at a very exact point, and not via 'Last system fill threshold'
A system that only consists of horizontal frames is similar to a vertical frame in that it contains no actual measures. Vertical frames are already handled in the
distributeStaves()
code; we probably just want to make sure that any system with no measures is handled in the same way. See https://github.com/mattmcclinch/MuseScore/commit/07c56f7.In reply to A system that only consists… by mattmcclinch
Seems a good solution to me!
In reply to Seems a good solution to me! by njvdberg
@mattmcclinch Do you make a PR for this or shall I include it in PR #7529 - Reimplement spacers in vertical staves adjustment to make sure all spacers are taken into account?
@Jojo-Schmitz right but even then, it's not a horizontal frame all by itself on the system. The problem only shows up if the frame is literally all by itself. So this would never be a desired end result, but would totally happen while editing, you add the frame, starting adjusting it, trying to make it as wide as possible to make the preceding measures as narrow as possible. The moment you go one step to far with the width, things disappear. If you happen to realize what happened, you just back off one notch again and all is well. But it would certainly be extremely disconcerting it you didn't figure that out!
Anyhow, glad to see the fix is simple.
Strange behavior on Grand Staff as well.
See the attached file, it is also just before Step 4.
When I try to change Frame’s width to 44sp or more,
Only Brace shows on page 2 with Frame.
Edit:
oops, it is happening also when ticking Disable vertical justification of staves .
So probably expected behavior..
Issue is partly solved in the latest
3.x
branch by PR #7529. Now all staves are visible but the last horizontal frame is ignored and invisible.Also looking closer into the solution and proposed by @mattmcclinch, this might not work because with this change the horizontal frame will be handled as a vertical frame. This means the spacing above and below the horizontal frame is then defined by the style parameters
Vertical frame top margin
andVertical frame bottom margin
and the horizontal frame is no longer handled as a "normal" staff.In reply to Issue is partly solved in… by njvdberg
Also looking closer into the solution and proposed by @mattmcclinch, this might not work because with this change the horizontal frame will be handled as a vertical frame. This means the spacing above and below the horizontal frame is then defined by the style parameters Vertical frame top margin and Vertical frame bottom margin and the horizontal frame is no longer handled as a "normal" staff.
And why is that a problem? That was the whole point of the change that I proposed. What is the purpose of such a horizontal frame or group of horizontal frames on a system with no measures?
No idea what the point of a system with no measures but if somebody wants them they should behave as a staff and obeying the same rules. If not, don't use a horizontal frame but use a vertical frame.
It seems strange a staff with only a horizontal frame starts behaving differently when it is for some reason in a system, without any measure. That's the problem for me.
@Marc Sabatella Actually, the cause is very simple. The vertical staves adjustment uses the skyline the find out what the actual height of a system is.
When a system contains only a horizontal frame, the skyline is empty and the
max()
method of the skyline returns -1000000 for the south skyline which is used added to the height of the system (= horizontal frame). This is not a problem as long this horizontal frame systems is not the last system on the page because then this strange value result in a far too largespace left
which is nicely to divided over all existing gaps.See PR #7776 for
3.x
and PR #7777 formaster
Commit message lacked the "#".
In reply to Commit message lacked the "#… by RobFog
Oops. Mea culpa.
need a brown bag? ;-)
Two brown bags, I made the same mistake twice ;-)
Automatically closed -- issue fixed for 2 weeks with no activity.