-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -971,19 +971,19 @@ void System::scanElements(void* data, void (*func)(void*, Element*), bool all) | |
func(data, t); | ||
++idx; | ||
} | ||
foreach(SpannerSegment* ss, _spannerSegments) { | ||
foreach (SpannerSegment* ss, _spannerSegments) { | ||
int staffIdx = ss->spanner()->staffIdx(); | ||
if (staffIdx == -1) { | ||
qDebug("System::scanElements: staffIDx == -1: %s %p", ss->spanner()->name(), ss->spanner()); | ||
staffIdx = 0; | ||
} | ||
bool v = true; | ||
Spanner* spanner = ss->spanner(); | ||
if(spanner->anchor() == Spanner::ANCHOR_SEGMENT || spanner->anchor() == Spanner::ANCHOR_CHORD) { | ||
if (spanner->anchor() == Spanner::ANCHOR_SEGMENT || spanner->anchor() == Spanner::ANCHOR_CHORD) { | ||
Element* se = spanner->startElement(); | ||
Element* ee = spanner->endElement(); | ||
bool v1 = true; | ||
if(se && (se->type() == Element::CHORD || se->type() == Element::REST)) { | ||
if (se && (se->type() == Element::CHORD || se->type() == Element::REST)) { | ||
ChordRest* cr = static_cast<ChordRest*>(se); | ||
Measure* m = cr->measure(); | ||
MStaff* mstaff = m->mstaff(cr->staffIdx()); | ||
|
@@ -999,7 +999,7 @@ void System::scanElements(void* data, void (*func)(void*, Element*), bool all) | |
v = v1 || v2; // hide spanner if both chords are hidden | ||
} | ||
if (all || (score()->staff(staffIdx)->show() && v) || (spanner->type() == Element::VOLTA)) | ||
func(data, ss); | ||
ss->spanner()->scanElements(data, func, all); | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
wschweer
Author
Contributor
|
||
} | ||
} | ||
|
||
|
This change seems to be the origin of issue http://musescore.org/en/node/22485 as reverting this line fixes the issue.
When the slur/tie is across a page change, 'climbing' from the SlurSegment to its parent Spanner links in both segments into both pages, each page getting one 'right' and one 'wrong' SlurSegment. Apparently, the 'wrong' SlurSegment's are not completely filtered out by the following BSP tree processing (which I was not able to understand).