diff --git a/src/macro-action-edit.cpp b/src/macro-action-edit.cpp index 2660cf9a..15de914d 100644 --- a/src/macro-action-edit.cpp +++ b/src/macro-action-edit.cpp @@ -220,11 +220,11 @@ void AdvSceneSwitcher::RemoveMacroAction(int idx) { std::lock_guard lock(switcher->m); + actionsList->Remove(idx); macro->Actions().erase(macro->Actions().begin() + idx); switcher->abortMacroWait = true; switcher->macroWaitCv.notify_all(); macro->UpdateActionIndices(); - actionsList->Remove(idx); SetActionData(*macro); } MacroActionSelectionChanged(-1); diff --git a/src/macro-condition-edit.cpp b/src/macro-condition-edit.cpp index 10aed481..f1596fe8 100644 --- a/src/macro-condition-edit.cpp +++ b/src/macro-condition-edit.cpp @@ -437,13 +437,13 @@ void AdvSceneSwitcher::RemoveMacroCondition(int idx) { std::lock_guard lock(switcher->m); + conditionsList->Remove(idx); macro->Conditions().erase(macro->Conditions().begin() + idx); macro->UpdateConditionIndices(); if (idx == 0 && macro->Conditions().size() > 0) { auto newRoot = macro->Conditions().at(0); newRoot->SetLogicType(LogicType::ROOT_NONE); } - conditionsList->Remove(idx); SetConditionData(*macro); } MacroConditionSelectionChanged(-1); diff --git a/src/macro-tab.cpp b/src/macro-tab.cpp index bfd6b2e0..e42be71b 100644 --- a/src/macro-tab.cpp +++ b/src/macro-tab.cpp @@ -98,12 +98,13 @@ void AdvSceneSwitcher::on_macroRemove_clicked() if (!item) { return; } + int idx = ui->macros->currentRow(); + delete item; QString name; { std::lock_guard lock(switcher->m); switcher->abortMacroWait = true; switcher->macroWaitCv.notify_all(); - int idx = ui->macros->currentRow(); QString::fromStdString(switcher->macros[idx]->Name()); switcher->macros.erase(switcher->macros.begin() + idx); for (auto &m : switcher->macros) { @@ -111,8 +112,6 @@ void AdvSceneSwitcher::on_macroRemove_clicked() } } - delete item; - if (ui->macros->count() == 0) { ui->macroHelp->setVisible(true); } @@ -360,6 +359,10 @@ void AdvSceneSwitcher::on_macros_currentRowChanged(int idx) if (idx == -1) { SetMacroEditAreaDisabled(true); + conditionsList->Clear(); + actionsList->Clear(); + conditionsList->SetHelpMsgVisible(true); + actionsList->SetHelpMsgVisible(true); return; }