1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
Origin: upstream, commit:d2278d6742aebc41e488357f4ce892d06b65780a
Author: Marc Sabatella <marc@outsideshore.com>
Description: fix #287871: volta line not drawn before start repeat
--- a/libmscore/line.cpp
+++ b/libmscore/line.cpp
@@ -668,15 +668,15 @@ QPointF SLine::linePos(Grip grip, System
while (seg && seg->segmentType() != SegmentType::EndBarLine)
seg = seg->prev();
if (!seg || !seg->enabled()) {
- // no end bar line; look for BeginBarLine of next measure
+ // no end bar line; look for BeginBarLine or StartRepeatBarLine of next measure
Measure* nm = m->nextMeasure();
if (nm->system() == m->system())
- seg = nm->first(SegmentType::BeginBarLine);
+ seg = nm->first(SegmentType::BeginBarLine|SegmentType::StartRepeatBarLine);
}
- qreal mwidth = seg ? seg->x() : m->bbox().right();
+ qreal mwidth = seg && seg->measure() == m ? seg->x() : m->bbox().right();
x = m->pos().x() + mwidth;
// align to barline
- if (seg && seg->isEndBarLineType()) {
+ if (seg && (seg->segmentType() & SegmentType::BarLineType)) {
Element* e = seg->element(0);
if (e && e->type() == ElementType::BAR_LINE) {
BarLineType blt = toBarLine(e)->barLineType();
@@ -985,7 +985,7 @@ void SLine::writeProperties(XmlWriter& x
//
bool modified = false;
for (const SpannerSegment* seg : spannerSegments()) {
- if (!seg->autoplace() || !seg->visible() ||
+ if (!seg->autoplace() || !seg->visible() ||
(!seg->isStyled(Pid::OFFSET) && (!seg->offset().isNull() || !seg->userOff2().isNull()))) {
modified = true;
break;
|