Skip to content

Commit

Permalink
Merge pull request #3243 from MarcSabatella/232931-break-selection
Browse files Browse the repository at this point in the history
fix #232931: allow breaks to be added by shortcut on any selection
  • Loading branch information
lasconic committed Jul 21, 2017
2 parents acc6fad + 8248426 commit f5e493c
Showing 1 changed file with 34 additions and 3 deletions.
37 changes: 34 additions & 3 deletions libmscore/cmd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3148,9 +3148,40 @@ void Score::cmdPadNoteDecreaseTAB()

void Score::cmdToggleLayoutBreak(LayoutBreak::Type type)
{
Element* el = selection().element();
if (el && el->isBarLine() && el->parent()->isSegment()) {
Measure* measure = toMeasure(el->parent()->parent());
// find measure(s)
QList<Measure*> ml;
if (selection().isRange()) {
Measure* startMeasure = nullptr;
Measure* endMeasure = nullptr;
if (!selection().measureRange(&startMeasure, &endMeasure))
return;
if (!startMeasure || !endMeasure)
return;
#if 1
// toggle break on the last measure of the range
ml.append(endMeasure);
// if more than one measure selected,
// also toggle break *before* the range (to try to fit selection on a single line)
if (startMeasure != endMeasure && startMeasure->prevMeasure())
ml.append(startMeasure->prevMeasure());
#else
// toggle breaks throughout the selection
for (Measure* m = startMeasure; m; m = m->nextMeasure()) {
ml.append(m);
if (m == endMeasure)
break;
}
#endif
}
else {
for (Element* el : selection().elements()) {
Measure* measure = toMeasure(el->findMeasure());
if (measure)
ml.append(measure);
}
}
// toggle the breaks
for (Measure* measure : ml) {
// if measure is mm rest, then propagate to last original measure
measure = measure->isMMRest() ? measure->mmRestLast() : measure;
if (measure)
Expand Down

0 comments on commit f5e493c

Please sign in to comment.