Instrument change added via double-click while in continuous view does not appear in score
Reported version
3.0
Priority
P0 - Critical
Type
Functional
Frequency
Once
Severity
S3 - Major
Reproducibility
Always
Status
closed
Regression
Yes
Workaround
Yes
Project
Double click an instrument change to a staff's instrument. Notice nothing appears to happen. Open the mixer (F10) and you will see the instrument change is in place.
Dragging to a note/rest works as expected.
At one point, double clicking and dragging the instrument change led to a crash but I'm not sure how to reproduce the crash.
Comments
I'm not quite following the instructions to reproduce. What are you double-clicking, exactly? Something previously added to the score? Something in a dialog?
It sounds like maybe you are saying you have selected a note or rest then double-clicked the "Change Instr" palette element and nothing happened, but I can't reproduce that - it adds normally for me.
In reply to I'm not quite following the… by Marc Sabatella
I was double clicking change instrument in the palette on the attached file. I created the file using the Save Selection... command from the file menu. I tried this on various staves with the same results. After your post I discovered the score this was created from does not have this problem.
Saul A3 - S1 - workspace.mscz
I can reproduce from that score indeed. Click any full measure rest, double-click the instrument change on palette, it seems to gets added but does not appear. I'm guessing some sort of issue with the text style. Since it works for most scores, I'm thinking maybe the save selection itself plays a role. How long ago was that operation performed? Much has changed with text styles over last few months.
In reply to I can reproduce from that… by Marc Sabatella
I just did a test with my latest download OS: Windows 10 (10.0), Arch.: x86_64, MuseScore version (64-bit): 3.0.0, revision: 100d297 which is from sometime in the last 2 days.
I still get the same results.
Here is what I did to reproduce the problem:
Create a score based upon the Concert Orchestra template with default 32 measures
Append 100 measures
change to continuous view
Start at a random measure, select all staves, use ctrl+shift+end to select to the end of the score and use Save selection... to create a new score
Select a rest and double click the Change Instruments text
No text is added, but the mixer channel is created.
I only quickly recreated the problem in a similar manner to how I must have made it the first time. I haven't done sufficient testing to see which steps can be ignored (e.g. maybe you don't need to add measures?) so we can break this down to the minimum steps required. I tested this with a single instrument and not adding measures and did not experience the problem. When I made the attached file, I probably created it in version 2 and imported it into version 3, but I don't remember for sure.
OK, I think the trigger is actually continuous view; save selection is a red herring. Even the default empty score, switch to continuous view, add an instrument change by selecting a measure rest and double-clicking in palette, and the element gets added but does not actually appear. Switch to page view and you see it, switch back to continuous and it is still there. So I think what happens is it never gets laid out if added via double-click in continuous view.
Judging by Score::collectSystem(), LayoutContext::layoutLinear() should layout InstrumentChange and SystemText at the same time as StaffText and Harmony. As it is, LayoutContext::layoutLinear() does not layout InstrumentChange or SystemText at all. There is also a difference between the two functions in the way Harmony is handled. It seems to me that both functions should handle Harmony the same way. Either it should always be laid out, or it should only be laid out if its layout is invalid. And if Score::collectSystem() calls autoplaceSegmentElement() on the Harmony, then LayoutContext::layoutLinear() should as well.
I tried to solve this problem by reusing the code between page mode and linear mode, see https://github.com/musescore/MuseScore/pull/4332.
Fixed in branch master, commit 7cf8fc208a
fix #278865, fix #279521: reuse system elements layout code in linear mode
Fixed in branch master, commit ebdc80a563
Merge pull request #4332 from dmitrio95/layoutlinear-overhaul
fix #278865, fix #279521: reuse system elements layout code in linear mode
Automatically closed -- issue fixed for 2 weeks with no activity.