From 920a89ddd920060be544f1d6db3e5c1c58e5c62a Mon Sep 17 00:00:00 2001 From: Bartlomiej Lewandowski Date: Sun, 27 Jul 2014 11:15:46 +0200 Subject: [PATCH] fix #12960 --- libmscore/cmd.cpp | 15 ++++++++++++--- libmscore/score.h | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libmscore/cmd.cpp b/libmscore/cmd.cpp index b98d9a97bb..e6c0135ca2 100644 --- a/libmscore/cmd.cpp +++ b/libmscore/cmd.cpp @@ -729,13 +729,23 @@ Fraction Score::makeGap(Segment* segment, int track, const Fraction& _sd, Tuplet bool Score::makeGap1(int tick, int staffIdx, Fraction len) { - ChordRest* cr = 0; Segment* seg = tick2segment(tick, true, Segment::Type::ChordRest); if (!seg) { qDebug("1:makeGap1: no segment at %d", tick); return false; } - int track = staffIdx * VOICES; + int strack = staffIdx * VOICES; + for (int track = strack; track < strack + 4; track++) { + bool result = makeGapVoice(seg, track, len, tick); + if(track == strack && !result) + return false; + } + return true; + } + +bool Score::makeGapVoice(Segment* seg, int track, Fraction len, int tick) + { + ChordRest* cr = 0; cr = static_cast(seg->element(track)); if (!cr) { // check if we are in the middle of a chord/rest @@ -761,7 +771,6 @@ bool Score::makeGap1(int tick, int staffIdx, Fraction len) return false; } if (seg1->element(track)) { - tick = seg1->tick(); cr = static_cast(seg1->element(track)); break; } diff --git a/libmscore/score.h b/libmscore/score.h index fe2d386d74..bf56427b33 100644 --- a/libmscore/score.h +++ b/libmscore/score.h @@ -546,6 +546,7 @@ class Score : public QObject { Fraction makeGap(Segment*, int track, const Fraction&, Tuplet*, bool keepChord = false); bool makeGap1(int tick, int staffIdx, Fraction len); + bool makeGapVoice(Segment* seg, int track, Fraction len, int tick); Rest* addRest(int tick, int track, TDuration, Tuplet*); Rest* addRest(Segment* seg, int track, TDuration d, Tuplet*);