@@ -1778,27 +1778,18 @@ void SlurTieLayout::adjustOverlappingSlurs(const std::list<SpannerSegment*>& spa
17781778 const double slurCollisionHorizOffset = 0.2 * spatium;
17791779 const double fuzzyHorizCompare = 0.25 * spatium;
17801780 auto compare = [fuzzyHorizCompare](double x1, double x2) { return std::abs (x1 - x2) < fuzzyHorizCompare; };
1781- for (SpannerSegment* seg1 : segments) {
1782- if (!seg1->isSlurSegment ()) {
1783- continue ;
1784- }
1785- SlurSegment* slur1 = toSlurSegment (seg1);
1786- for (SpannerSegment* seg2 : segments) {
1787- if (!seg2->isSlurTieSegment () || seg1 == seg2) {
1781+ for (SlurSegment* slur1 : segments) {
1782+ for (SlurSegment* slur2 : segments) {
1783+ if (slur1->slur ()->endChord () == slur2->slur ()->startChord ()
1784+ && compare (slur1->ups (Grip::END).p .y (), slur2->ups (Grip::START).p .y ())) {
1785+ slur1->ups (Grip::END).p .rx () -= slurCollisionHorizOffset;
1786+ slur2->ups (Grip::START).p .rx () += slurCollisionHorizOffset;
1787+ SlurTieLayout::computeBezier (slur1);
1788+ SlurTieLayout::computeBezier (slur2);
17881789 continue ;
17891790 }
1790- if (seg2->isSlurSegment ()) {
1791- SlurSegment* slur2 = toSlurSegment (seg2);
1792- if (slur1->slur ()->endChord () == slur2->slur ()->startChord ()
1793- && compare (slur1->ups (Grip::END).p .y (), slur2->ups (Grip::START).p .y ())) {
1794- slur1->ups (Grip::END).p .rx () -= slurCollisionHorizOffset;
1795- slur2->ups (Grip::START).p .rx () += slurCollisionHorizOffset;
1796- SlurTieLayout::computeBezier (slur1);
1797- SlurTieLayout::computeBezier (slur2);
1798- continue ;
1799- }
1800- }
1801- SlurTieSegment* slurTie2 = toSlurTieSegment (seg2);
1791+
1792+ SlurTieSegment* slurTie2 = toSlurTieSegment (slur2);
18021793
18031794 // slurs don't collide with themselves or slurs on other staves
18041795 if (slur1->vStaffIdx () != slurTie2->vStaffIdx ()) {
0 commit comments