Skip to content

Fix #26233: Combination of pickup measure and linked staff makes scor… #27694

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
8 changes: 6 additions & 2 deletions src/engraving/dom/excerpt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1244,10 +1244,14 @@ void Excerpt::cloneStaff(Staff* srcStaff, Staff* dstStaff, bool cloneSpanners)
TremoloTwoChord* prevTremolo = nullptr;
for (Segment* seg = m->first(); seg; seg = seg->next()) {
EngravingItem* oe = seg->element(srcTrack);
if (oe == 0 || oe->generated()) {
EngravingItem* de = seg->elementAt(dstTrack);
if (oe == 0) {
if (de != 0) {
seg->remove(de);
}
continue;
}
if (oe->isTimeSig()) {
if (oe->isTimeSig() || oe->generated()) {
continue;
}
EngravingItem* ne = 0;
Expand Down
193 changes: 193 additions & 0 deletions src/engraving/tests/links_data/testPickupLinkedStaff-ref.mscx
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
<?xml version="1.0" encoding="UTF-8"?>
<museScore version="4.50">
<Score>
<Division>480</Division>
<Style>
<spatium>1.74978</spatium>
</Style>
<showInvisible>1</showInvisible>
<showUnprintable>1</showUnprintable>
<showFrames>1</showFrames>
<showMargins>0</showMargins>
<metaTag name="arranger"></metaTag>
<metaTag name="composer">Composer / arranger</metaTag>
<metaTag name="copyright"></metaTag>
<metaTag name="lyricist"></metaTag>
<metaTag name="movementNumber"></metaTag>
<metaTag name="movementTitle"></metaTag>
<metaTag name="source"></metaTag>
<metaTag name="subtitle">Subtitle</metaTag>
<metaTag name="translator"></metaTag>
<metaTag name="workNumber"></metaTag>
<metaTag name="workTitle">Untitled score</metaTag>
<Order id="orchestra">
<name>Orchestra</name>
<instrument id="guitar-steel">
<family id="guitars">Guitars</family>
</instrument>
<section id="woodwind" brackets="true" barLineSpan="true" thinBrackets="true">
<family>flutes</family>
<family>oboes</family>
<family>clarinets</family>
<family>saxophones</family>
<family>bassoons</family>
<unsorted group="woodwinds"/>
</section>
<section id="brass" brackets="true" barLineSpan="true" thinBrackets="true">
<family>horns</family>
<family>trumpets</family>
<family>cornets</family>
<family>flugelhorns</family>
<family>trombones</family>
<family>tubas</family>
<unsorted group="brass"/>
</section>
<section id="timpani" brackets="true" barLineSpan="true" thinBrackets="true">
<family>timpani</family>
</section>
<section id="percussion" brackets="true" barLineSpan="true" thinBrackets="true">
<family>keyboard-percussion</family>
<unsorted group="pitched-percussion"/>
<family>drums</family>
<family>unpitched-metal-percussion</family>
<family>unpitched-wooden-percussion</family>
<family>other-percussion</family>
<unsorted group="unpitched-percussion"/>
</section>
<family>keyboards</family>
<family>harps</family>
<family>organs</family>
<family>synths</family>
<unsorted/>
<soloists/>
<section id="voices" brackets="true" barLineSpan="false" thinBrackets="true">
<family>voices</family>
<family>voice-groups</family>
</section>
<section id="strings" brackets="true" barLineSpan="true" thinBrackets="true">
<family>orchestral-strings</family>
</section>
</Order>
<Part id="1">
<Staff id="1">
<linkedTo>2</linkedTo>
<StaffType group="pitched">
<name>stdNormal</name>
</StaffType>
<defaultClef>G8vb</defaultClef>
</Staff>
<Staff id="2">
<linkedTo>1</linkedTo>
<StaffType group="pitched">
<name>stdNormal</name>
</StaffType>
<defaultClef>G8vb</defaultClef>
</Staff>
<soloist>1</soloist>
<trackName>Acoustic Guitar</trackName>
<Instrument id="guitar-steel">
<longName>Acoustic Guitar</longName>
<shortName>Guit.</shortName>
<trackName>Acoustic Guitar</trackName>
<minPitchP>40</minPitchP>
<maxPitchP>84</maxPitchP>
<minPitchA>40</minPitchA>
<maxPitchA>83</maxPitchA>
<instrumentId>pluck.guitar.acoustic</instrumentId>
<clef>G8vb</clef>
<clef staff="2">G8vb</clef>
<singleNoteDynamics>0</singleNoteDynamics>
<StringData>
<frets>20</frets>
<string>40</string>
<string>45</string>
<string>50</string>
<string>55</string>
<string>59</string>
<string>64</string>
</StringData>
<Channel name="open">
<program value="25"/>
</Channel>
<Channel name="mute">
<program value="28"/>
</Channel>
<Channel name="jazz">
<program value="26"/>
</Channel>
</Instrument>
</Part>
<Staff id="1">
<VBox>
<height>10</height>
<sizeIsSpatiumDependent>1</sizeIsSpatiumDependent>
<Text>
<style>title</style>
<text>Untitled score</text>
</Text>
<Text>
<style>subtitle</style>
<text>Subtitle</text>
</Text>
<Text>
<style>composer</style>
<text>Composer / arranger</text>
</Text>
</VBox>
<Measure len="7/16">
<voice>
<KeySig>
<linkedMain/>
<concertKey>0</concertKey>
</KeySig>
<TimeSig>
<sigN>4</sigN>
<sigD>4</sigD>
</TimeSig>
<Rest>
<linkedMain/>
<durationType>eighth</durationType>
</Rest>
<Rest>
<linkedMain/>
<durationType>16th</durationType>
</Rest>
<Rest>
<linkedMain/>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
</Staff>
<Staff id="2">
<Measure len="7/16">
<voice>
<KeySig>
<linked>
</linked>
<concertKey>0</concertKey>
</KeySig>
<TimeSig>
<sigN>4</sigN>
<sigD>4</sigD>
</TimeSig>
<Rest>
<linked>
</linked>
<durationType>eighth</durationType>
</Rest>
<Rest>
<linked>
</linked>
<durationType>16th</durationType>
</Rest>
<Rest>
<linked>
</linked>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
</Staff>
</Score>
</museScore>
166 changes: 166 additions & 0 deletions src/engraving/tests/links_data/testPickupLinkedStaff.mscx
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="UTF-8"?>
<museScore version="4.50">
<programVersion>4.6.0</programVersion>
<programRevision></programRevision>
<Score>
<eid>gY8R+JIYuhL_buEc7F+kvMG</eid>
<Division>480</Division>
<showInvisible>1</showInvisible>
<showUnprintable>1</showUnprintable>
<showFrames>1</showFrames>
<showMargins>0</showMargins>
<open>1</open>
<metaTag name="arranger"></metaTag>
<metaTag name="composer">Composer / arranger</metaTag>
<metaTag name="copyright"></metaTag>
<metaTag name="creationDate">2025-04-21</metaTag>
<metaTag name="lyricist"></metaTag>
<metaTag name="movementNumber"></metaTag>
<metaTag name="movementTitle"></metaTag>
<metaTag name="platform">Apple Macintosh</metaTag>
<metaTag name="source"></metaTag>
<metaTag name="subtitle">Subtitle</metaTag>
<metaTag name="translator"></metaTag>
<metaTag name="workNumber"></metaTag>
<metaTag name="workTitle">Untitled score</metaTag>
<Order id="orchestra">
<name>Orchestra</name>
<instrument id="guitar-steel">
<family id="guitars">Guitars</family>
</instrument>
<section id="woodwind" brackets="true" barLineSpan="true" thinBrackets="true">
<family>flutes</family>
<family>oboes</family>
<family>clarinets</family>
<family>saxophones</family>
<family>bassoons</family>
<unsorted group="woodwinds"/>
</section>
<section id="brass" brackets="true" barLineSpan="true" thinBrackets="true">
<family>horns</family>
<family>trumpets</family>
<family>cornets</family>
<family>flugelhorns</family>
<family>trombones</family>
<family>tubas</family>
<unsorted group="brass"/>
</section>
<section id="timpani" brackets="true" barLineSpan="true" thinBrackets="true">
<family>timpani</family>
</section>
<section id="percussion" brackets="true" barLineSpan="true" thinBrackets="true">
<family>keyboard-percussion</family>
<unsorted group="pitched-percussion"/>
<family>drums</family>
<family>unpitched-metal-percussion</family>
<family>unpitched-wooden-percussion</family>
<family>other-percussion</family>
<unsorted group="unpitched-percussion"/>
</section>
<family>keyboards</family>
<family>harps</family>
<family>organs</family>
<family>synths</family>
<unsorted/>
<soloists/>
<section id="voices" brackets="true" barLineSpan="false" thinBrackets="true">
<family>voices</family>
<family>voice-groups</family>
</section>
<section id="strings" brackets="true" barLineSpan="true" thinBrackets="true">
<family>orchestral-strings</family>
</section>
</Order>
<Part id="1">
<Staff id="1">
<StaffType group="pitched">
<name>stdNormal</name>
</StaffType>
<defaultClef>G8vb</defaultClef>
</Staff>
<soloist>1</soloist>
<trackName>Acoustic Guitar</trackName>
<Instrument id="guitar-steel">
<longName>Acoustic Guitar</longName>
<shortName>Guit.</shortName>
<trackName>Acoustic Guitar</trackName>
<minPitchP>40</minPitchP>
<maxPitchP>84</maxPitchP>
<minPitchA>40</minPitchA>
<maxPitchA>83</maxPitchA>
<instrumentId>pluck.guitar.acoustic</instrumentId>
<clef>G8vb</clef>
<clef staff="2">G8vb</clef>
<singleNoteDynamics>0</singleNoteDynamics>
<StringData>
<frets>20</frets>
<string>40</string>
<string>45</string>
<string>50</string>
<string>55</string>
<string>59</string>
<string>64</string>
</StringData>
<Channel name="open">
<program value="25"/>
<synti>Fluid</synti>
</Channel>
<Channel name="mute">
<program value="28"/>
<synti>Fluid</synti>
</Channel>
<Channel name="jazz">
<program value="26"/>
<synti>Fluid</synti>
</Channel>
</Instrument>
</Part>
<Staff id="1">
<VBox>
<height>10</height>
<eid>YRewe+1wtBJ_B/s5bHeD0yG</eid>
<Text>
<eid>mtumnv/Rk/J_MQ5AaeMX/QE</eid>
<style>title</style>
<text>Untitled score</text>
</Text>
<Text>
<eid>0Ki/39rH30G_a3j9vhraDbM</eid>
<style>subtitle</style>
<text>Subtitle</text>
</Text>
<Text>
<eid>DCv1Hr68jl_lU3VTe3ZRdM</eid>
<style>composer</style>
<text>Composer / arranger</text>
</Text>
</VBox>
<Measure len="7/16">
<eid>Ggj1CbyB6DC_i4qW5TIBQXF</eid>
<voice>
<KeySig>
<eid>6NTQCl7CkfI_ZWS2zjx+axP</eid>
<concertKey>0</concertKey>
</KeySig>
<TimeSig>
<eid>KU3nBgIs0h_d5Xl/tJ2HfF</eid>
<sigN>4</sigN>
<sigD>4</sigD>
</TimeSig>
<Rest>
<eid>iCr/8Pt0YE_swjjY8sRZaF</eid>
<durationType>eighth</durationType>
</Rest>
<Rest>
<eid>Vc6rwaUeGHP_SNYobkeQygG</eid>
<durationType>16th</durationType>
</Rest>
<Rest>
<eid>gkJXQxtZNIF_agCRGi8Q9gK</eid>
<durationType>quarter</durationType>
</Rest>
</voice>
</Measure>
</Staff>
</Score>
</museScore>
Loading
Loading