Skip to content

Commit

Permalink
fix #285605, fix #228531, fix #77396: repeat barline, then clef
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcSabatella committed Apr 15, 2019
1 parent 25c8a3e commit 691b83c
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
27 changes: 25 additions & 2 deletions libmscore/measure.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3523,6 +3523,28 @@ qreal Measure::createEndBarLines(bool isLastMeasureInSystem)
seg->createShapes();
}

// set relative position of end barline and clef
// if end repeat, clef goes after, otherwise clef goes before
Segment* clefSeg = findSegmentR(SegmentType::Clef, ticks());
if (clefSeg) {
if (clefSeg) {
Segment* s1;
Segment* s2;
if (repeatEnd()) {
s1 = seg;
s2 = clefSeg;
}
else {
s1 = clefSeg;
s2 = seg;
}
if (s1->next() != s2) {
_segments.remove(s1);
_segments.insert(s1, s2);
}
}
}

// fix segment layout
Segment* s = seg->prevActive();
if (s) {
Expand Down Expand Up @@ -3803,7 +3825,7 @@ void Measure::addSystemTrailer(Measure* nm)
s->setEnabled(false);
}

// courtesy key signatures
// courtesy key signatures, clefs

int n = score()->nstaves();
bool show = hasCourtesyKeySig();
Expand Down Expand Up @@ -3848,11 +3870,12 @@ void Measure::addSystemTrailer(Measure* nm)
Clef* clef = toClef(clefSegment->element(track));
if (clef) {
clef->setSmall(true);
if (!score()->genCourtesyClef() || repeatEnd() || isFinalMeasure || !clef->showCourtesy())
if (!score()->genCourtesyClef() || isFinalMeasure || !clef->showCourtesy())
clef->clear(); // make invisible
}
}
}

checkTrailer();
}

Expand Down
6 changes: 4 additions & 2 deletions libmscore/segment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2066,9 +2066,9 @@ qreal Segment::minHorizontalDistance(Segment* ns, bool systemHeaderGap) const
// w = qMax(w, minRight()) + d;
}
else if (st & (SegmentType::Clef | SegmentType::HeaderClef)) {
if (nst == SegmentType::KeySig)
if (nst == SegmentType::KeySig || nst == SegmentType::KeySigAnnounce)
w += score()->styleP(Sid::clefKeyDistance);
else if (nst == SegmentType::TimeSig)
else if (nst == SegmentType::TimeSig || nst == SegmentType::TimeSigAnnounce)
w += score()->styleP(Sid::clefTimesigDistance);
else if (nst & (SegmentType::EndBarLine | SegmentType::StartRepeatBarLine))
w += score()->styleP(Sid::clefBarlineDistance);
Expand All @@ -2092,6 +2092,8 @@ qreal Segment::minHorizontalDistance(Segment* ns, bool systemHeaderGap) const
w += score()->styleP(Sid::keysigLeftMargin);
else if (nst == SegmentType::TimeSigAnnounce)
w += score()->styleP(Sid::timesigLeftMargin);
else if (nst == SegmentType::Clef)
w += score()->styleP(Sid::clefLeftMargin);
}
else if (st == SegmentType::TimeSig && nst == SegmentType::StartRepeatBarLine)
w += score()->styleP(Sid::timesigBarlineDistance);
Expand Down

0 comments on commit 691b83c

Please sign in to comment.