Skip to content

Commit a99b996

Browse files
mike-spaEism
authored andcommitted
Always use Harmony::plainText to refer to diagrams
Especially for ordering from Layout panel, because the title may contain special characters
1 parent 10b7a8f commit a99b996

4 files changed

Lines changed: 23 additions & 5 deletions

File tree

src/engraving/dom/box.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,7 @@ void FBox::init()
769769

770770
StringList currentDiagrams;
771771
for (EngravingItem* item : el()) {
772-
currentDiagrams.push_back(toFretDiagram(item)->harmony()->harmonyName().toLower());
772+
currentDiagrams.push_back(toFretDiagram(item)->harmonyText().toLower());
773773
}
774774

775775
if (!m_invisibleDiagrams.empty()) {
@@ -950,13 +950,16 @@ ElementList FBox::orderedElements(bool includeInvisible) const
950950
{
951951
ElementList elements = el();
952952
const StringList& diagramsOrder = this->diagramsOrder();
953+
if (diagramsOrder.empty()) {
954+
return elements;
955+
}
953956

954957
std::sort(elements.begin(), elements.end(), [&diagramsOrder](const EngravingItem* a, const EngravingItem* b) {
955958
const FretDiagram* diagramA = toFretDiagram(a);
956-
const String diagramAHarmonyName = diagramA->harmony()->harmonyName().toLower();
959+
const String diagramAHarmonyName = diagramA->harmonyText().toLower();
957960

958961
const FretDiagram* diagramB = toFretDiagram(b);
959-
const String diagramBHarmonyName = diagramB->harmony()->harmonyName().toLower();
962+
const String diagramBHarmonyName = diagramB->harmonyText().toLower();
960963

961964
auto itA = std::find(diagramsOrder.begin(), diagramsOrder.end(), diagramAHarmonyName);
962965
auto itB = std::find(diagramsOrder.begin(), diagramsOrder.end(), diagramBHarmonyName);
@@ -969,7 +972,7 @@ ElementList FBox::orderedElements(bool includeInvisible) const
969972

970973
muse::remove_if(elements, [&invisibleDiagrams](const EngravingItem* element){
971974
const FretDiagram* diagram = toFretDiagram(element);
972-
const String diagramHarmonyName = diagram->harmony()->harmonyName().toLower();
975+
const String diagramHarmonyName = diagram->harmonyText().toLower();
973976
return muse::contains(invisibleDiagrams, diagramHarmonyName);
974977
});
975978
}

src/inspector/models/notation/frames/fretframe/fretframechorditem.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ void FretFrameChordItem::setTitle(const QString& title)
4343
emit titleChanged();
4444
}
4545

46+
QString FretFrameChordItem::plainText() const
47+
{
48+
return m_plainText;
49+
}
50+
51+
void FretFrameChordItem::setPlainText(const QString& plainText)
52+
{
53+
m_plainText = plainText;
54+
}
55+
4656
bool FretFrameChordItem::isVisible() const
4757
{
4858
return m_isVisible;

src/inspector/models/notation/frames/fretframe/fretframechorditem.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ class FretFrameChordItem : public muse::uicomponents::SelectableItemListModel::I
3838
QString title() const;
3939
void setTitle(const QString& title);
4040

41+
QString plainText() const; // same as title but without special characters
42+
void setPlainText(const QString& plainText);
43+
4144
bool isVisible() const;
4245
void setIsVisible(bool visible);
4346

@@ -49,6 +52,7 @@ class FretFrameChordItem : public muse::uicomponents::SelectableItemListModel::I
4952
private:
5053
QString m_id;
5154
QString m_title;
55+
QString m_plainText;
5256
bool m_isVisible = false;
5357
};
5458
}

src/inspector/models/notation/frames/fretframe/fretframechordlistmodel.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ void FretFrameChordListModel::load()
6363
FretDiagram* diagram = toFretDiagram(element);
6464
auto chordItem = new FretFrameChordItem(this);
6565
chordItem->setTitle(harmonyName(diagram->harmony()));
66+
chordItem->setPlainText(diagram->harmonyText());
6667

6768
chordItem->setIsVisible(!muse::contains(invisibleDiagrams, diagram->harmony()->harmonyName().toLower()));
6869

@@ -201,7 +202,7 @@ void FretFrameChordListModel::saveOrder()
201202

202203
for (const Item* item: items()) {
203204
const FretFrameChordItem* chordItem = dynamic_cast<const FretFrameChordItem*>(item);
204-
newOrder.push_back(String::fromQString(chordItem->title()));
205+
newOrder.push_back(String::fromQString(chordItem->plainText()));
205206
}
206207

207208
m_fretBox->undoReorderElements(newOrder);

0 commit comments

Comments
 (0)