@@ -1067,12 +1067,12 @@ void SystemLayout::layoutHarmonies(const std::vector<Harmony*> harmonies, System
10671067 }
10681068
10691069 // Only vertically align one chord symbol per tick & staff
1070- std::map< Fraction, staff_idx_t > harmonyPositions;
1070+ std::set<std::pair< Fraction, staff_idx_t > > harmonyPositions;
10711071 std::vector<EngravingItem*> harmonyItemsAlign;
10721072 std::vector<EngravingItem*> harmonyItemsNoAlign;
10731073
10741074 for (Harmony* h : harmonies) {
1075- if (muse::contains (harmonyPositions, h->tick ())) {
1075+ if (muse::contains (harmonyPositions, { h->tick (), h-> staffIdx () } )) {
10761076 harmonyItemsNoAlign.push_back (h);
10771077 continue ;
10781078 }
@@ -1114,13 +1114,13 @@ void SystemLayout::layoutFretDiagrams(const ElementsToLayout& elements, System*
11141114 }
11151115
11161116 // Only vertically align one fd per tick & staff
1117- std::map< Fraction, staff_idx_t > fretHarmonyPositions;
1117+ std::set<std::pair< Fraction, staff_idx_t > > fretHarmonyPositions;
11181118 std::vector<EngravingItem*> fretItemsAlign;
11191119 std::vector<EngravingItem*> fretOrHarmonyItemsNoAlign;
11201120 std::vector<Harmony*> harmonyItemsAlign (elements.harmonies .begin (), elements.harmonies .end ());
11211121
11221122 for (FretDiagram* fd : elements.fretDiagrams ) {
1123- if (muse::contains (fretHarmonyPositions, fd->tick ())) {
1123+ if (muse::contains (fretHarmonyPositions, { fd->tick (), fd-> staffIdx () } )) {
11241124 fretOrHarmonyItemsNoAlign.push_back (fd);
11251125 if (fd->harmony ()) {
11261126 harmonyItemsAlign.erase (std::remove (harmonyItemsAlign.begin (), harmonyItemsAlign.end (), fd->harmony ()));
@@ -1140,7 +1140,7 @@ void SystemLayout::layoutFretDiagrams(const ElementsToLayout& elements, System*
11401140 if (h->getParentFretDiagram ()) {
11411141 continue ;
11421142 }
1143- if (muse::contains (fretHarmonyPositions, h->tick ())) {
1143+ if (muse::contains (fretHarmonyPositions, { h->tick (), h-> staffIdx () } )) {
11441144 harmonyItemsAlign.erase (std::remove (harmonyItemsAlign.begin (), harmonyItemsAlign.end (), h));
11451145 fretOrHarmonyItemsNoAlign.push_back (h);
11461146 continue ;
@@ -1161,7 +1161,7 @@ void SystemLayout::layoutFretDiagrams(const ElementsToLayout& elements, System*
11611161 Autoplace::autoplaceSegmentElement (item, item->mutldata ());
11621162 Harmony* harmony = toFretDiagram (item)->harmony ();
11631163 if (harmony) {
1164- autoplaceHarmony (item );
1164+ autoplaceHarmony (harmony );
11651165 }
11661166 } else if (item->isHarmony ()) {
11671167 autoplaceHarmony (item);
0 commit comments