Skip to content

Commit

Permalink
fix #305134: crash on chordsymbol playback
Browse files Browse the repository at this point in the history
  • Loading branch information
Jojo-Schmitz committed May 9, 2020
1 parent 5eaa04f commit 108d4ea
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 11 deletions.
20 changes: 10 additions & 10 deletions libmscore/part.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ void Part::updateHarmonyChannels(bool isDoOnInstrumentChanged, bool checkRemoval
if (!harmonyChannel() && harmonyCount() > 0) {
Instrument* instr = instrument();
Channel* c = new Channel(*instr->channel(0));
c->setName(qApp->translate("channel", Channel::HARMONY_NAME));
c->setName(Channel::HARMONY_NAME);
instr->appendChannel(c);
onInstrumentChanged();
}
Expand All @@ -610,17 +610,17 @@ void Part::updateHarmonyChannels(bool isDoOnInstrumentChanged, bool checkRemoval

const Channel* Part::harmonyChannel() const
{
const Instrument* instr = instrument();
if (!instr)
return nullptr;
const Instrument* instr = instrument();
if (!instr)
return nullptr;

int chanIdx = instr->channelIdx(Channel::HARMONY_NAME);
if (chanIdx == -1)
return nullptr;
int chanIdx = instr->channelIdx(Channel::HARMONY_NAME);
if (chanIdx == -1)
return nullptr;

const Channel* chan = instr->channel(chanIdx);
Q_ASSERT(chan);
return chan;
const Channel* chan = instr->channel(chanIdx);
Q_ASSERT(chan);
return chan;
}

//---------------------------------------------------------
Expand Down
4 changes: 4 additions & 0 deletions mscore/articulationprop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ ArticulationProperties::ArticulationProperties(Articulation* na, QWidget* parent
channelList->addItem(qApp->translate("channel", Channel::DEFAULT_NAME));
channelList->item(channelList->count() - 1)->setData(Qt::UserRole, Channel::DEFAULT_NAME);
}
else if (a->name() == Channel::HARMONY_NAME) {
channelList->addItem(qApp->translate("channel", Channel::HARMONY_NAME));
channelList->item(channelList->count() - 1)->setData(Qt::UserRole, Channel::HARMONY_NAME);
}
else {
channelList->addItem(qApp->translate("InstrumentsXML", a->name().toUtf8().data()));
channelList->item(channelList->count() - 1)->setData(Qt::UserRole, a->name());
Expand Down
2 changes: 1 addition & 1 deletion mscore/parteditbase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ void PartEdit::setPart(Part* p, Channel* a)
part = p;
QString s = part->partName();
if (!a->name().isEmpty()) {
if (a->name() != Channel::DEFAULT_NAME) {
if (a->name() != Channel::DEFAULT_NAME && a->name() != Channel::HARMONY_NAME) {
s += "-";
s += qApp->translate("InstrumentsXML", a->name().toUtf8().data());
}
Expand Down
12 changes: 12 additions & 0 deletions mscore/stafftextproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ static void initChannelCombo(QComboBox* cb, StaffTextBase* st)
for (const Channel* a : part->instrument(tick)->channel()) {
if (a->name().isEmpty() || a->name() == Channel::DEFAULT_NAME)
cb->addItem(qApp->translate("channel", Channel::DEFAULT_NAME));
else if (a->name() == Channel::HARMONY_NAME)
cb->addItem(qApp->translate("channel", Channel::HARMONY_NAME));
else
cb->addItem(qApp->translate("InstrumentsXML", a->name().toUtf8().data()));
}
Expand Down Expand Up @@ -186,6 +188,8 @@ StaffTextProperties::StaffTextProperties(const StaffTextBase* st, QWidget* paren
item->setData(0, Qt::UserRole, i);
if (a->name().isEmpty() || a->name() == Channel::DEFAULT_NAME)
item->setText(0, qApp->translate("channel", Channel::DEFAULT_NAME));
else if (a->name() == Channel::HARMONY_NAME)
item->setText(0, qApp->translate("channel", Channel::HARMONY_NAME));
else
item->setText(0, qApp->translate("InstrumentsXML", a->name().toUtf8().data()));
item->setText(1, qApp->translate("InstrumentsXML", a->descr().toUtf8().data()));
Expand Down Expand Up @@ -392,6 +396,10 @@ void StaffTextProperties::channelItemChanged(QTreeWidgetItem* item, QTreeWidgetI
ti->setText(0, qApp->translate("channel", Channel::DEFAULT_NAME));
ti->setData(0, Qt::UserRole, Channel::DEFAULT_NAME);
}
else if (e.name == Channel::HARMONY_NAME) {
ti->setText(0, qApp->translate("channel", Channel::HARMONY_NAME));
ti->setData(0, Qt::UserRole, Channel::HARMONY_NAME);
}
else {
ti->setText(0, qApp->translate("InstrumentsXML", e.name.toUtf8().data()));
ti->setData(0, Qt::UserRole, e.name);
Expand All @@ -404,6 +412,10 @@ void StaffTextProperties::channelItemChanged(QTreeWidgetItem* item, QTreeWidgetI
ti->setText(0, qApp->translate("channel", Channel::DEFAULT_NAME));
ti->setData(0, Qt::UserRole, Channel::DEFAULT_NAME);
}
else if (e.name == Channel::HARMONY_NAME) {
ti->setText(0, qApp->translate("channel", Channel::HARMONY_NAME));
ti->setData(0, Qt::UserRole, Channel::HARMONY_NAME);
}
else {
ti->setText(0, qApp->translate("InstrumentsXML", e.name.toUtf8().data()));
ti->setData(0, Qt::UserRole, e.name);
Expand Down

0 comments on commit 108d4ea

Please sign in to comment.