fix crash resulting from deleting encounter fields with groups present
This commit is contained in:
parent
f34aec824e
commit
940e7355d0
1 changed files with 14 additions and 2 deletions
|
@ -470,7 +470,7 @@ void Editor::configureEncounterJSON(QWidget *window) {
|
||||||
QVBoxLayout *slotChoiceLayout = new QVBoxLayout;
|
QVBoxLayout *slotChoiceLayout = new QVBoxLayout;
|
||||||
if (useGroups) {
|
if (useGroups) {
|
||||||
QComboBox *groupCombo = new QComboBox;
|
QComboBox *groupCombo = new QComboBox;
|
||||||
connect(groupCombo, QOverload<const QString &>::of(&QComboBox::textActivated), [&tempFields, ¤tField, index](QString newGroupName) {
|
connect(groupCombo, QOverload<const QString &>::of(&QComboBox::textActivated), [&tempFields, ¤tField, &updateTotal, index](QString newGroupName) {
|
||||||
for (EncounterField &field : tempFields) {
|
for (EncounterField &field : tempFields) {
|
||||||
if (field.name == currentField.name) {
|
if (field.name == currentField.name) {
|
||||||
for (auto groupNameIterator : field.groups) {
|
for (auto groupNameIterator : field.groups) {
|
||||||
|
@ -487,6 +487,7 @@ void Editor::configureEncounterJSON(QWidget *window) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
updateTotal(currentField);
|
||||||
});
|
});
|
||||||
for (auto groupNameIterator : currentField.groups) {
|
for (auto groupNameIterator : currentField.groups) {
|
||||||
groupCombo->addItem(groupNameIterator.first);
|
groupCombo->addItem(groupNameIterator.first);
|
||||||
|
@ -544,6 +545,12 @@ void Editor::configureEncounterJSON(QWidget *window) {
|
||||||
delete slot;
|
delete slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!tempFields.size()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (index >= tempFields.size()) {
|
||||||
|
index = tempFields.size() - 1;
|
||||||
|
}
|
||||||
EncounterField ¤tField = tempFields[index];
|
EncounterField ¤tField = tempFields[index];
|
||||||
for (int i = 0; i < currentField.encounterRates.size(); i++) {
|
for (int i = 0; i < currentField.encounterRates.size(); i++) {
|
||||||
grid.addWidget(createNewSlot(i, currentField), i / 4 + 1, i % 4);
|
grid.addWidget(createNewSlot(i, currentField), i / 4 + 1, i % 4);
|
||||||
|
@ -604,10 +611,15 @@ void Editor::configureEncounterJSON(QWidget *window) {
|
||||||
removeSlotButton->setFlat(true);
|
removeSlotButton->setFlat(true);
|
||||||
connect(removeSlotButton, &QPushButton::clicked, [&fieldChoices, &drawSlotWidgets, &tempFields]() {
|
connect(removeSlotButton, &QPushButton::clicked, [&fieldChoices, &drawSlotWidgets, &tempFields]() {
|
||||||
EncounterField &field = tempFields[fieldChoices->currentIndex()];
|
EncounterField &field = tempFields[fieldChoices->currentIndex()];
|
||||||
if (field.encounterRates.size() > 1)
|
int lastIndex = field.encounterRates.size() - 1;
|
||||||
|
if (lastIndex > 0)
|
||||||
field.encounterRates.removeLast();
|
field.encounterRates.removeLast();
|
||||||
|
for (auto &g : field.groups) {
|
||||||
|
field.groups[g.first].removeAll(lastIndex);
|
||||||
|
}
|
||||||
drawSlotWidgets(fieldChoices->currentIndex());
|
drawSlotWidgets(fieldChoices->currentIndex());
|
||||||
});
|
});
|
||||||
|
// TODO: method for editing groups?
|
||||||
|
|
||||||
QFrame firstRow;
|
QFrame firstRow;
|
||||||
QHBoxLayout firstRowLayout;
|
QHBoxLayout firstRowLayout;
|
||||||
|
|
Loading…
Reference in a new issue