diff --git a/lib/variables/variable-tab.cpp b/lib/variables/variable-tab.cpp index 0e5ae71a..3b6bd453 100644 --- a/lib/variables/variable-tab.cpp +++ b/lib/variables/variable-tab.cpp @@ -277,6 +277,25 @@ void AdvSceneSwitcher::OpenSettingsForSelectedVariable() } } +static void removeVariablesWithNames(const QStringList &varNames) +{ + for (const auto &name : varNames) { + auto variable = GetVariableByQString(name); + if (!variable) { + continue; + } + + auto &variables = GetVariables(); + variables.erase( + std::remove_if( + variables.begin(), variables.end(), + [variable](const std::shared_ptr &item) { + return item.get() == variable; + }), + variables.end()); + } +} + void AdvSceneSwitcher::RemoveSelectedVariables() { auto selectedRows = ui->variables->selectionModel()->selectedRows(); @@ -309,25 +328,13 @@ void AdvSceneSwitcher::RemoveSelectedVariables() } } - for (const auto &name : varNames) { - VariableSignalManager::Instance()->Remove(name); + { + auto lock = LockContext(); + removeVariablesWithNames(varNames); } - auto lock = LockContext(); for (const auto &name : varNames) { - auto variable = GetVariableByQString(name); - if (!variable) { - continue; - } - - auto &variables = GetVariables(); - variables.erase( - std::remove_if( - variables.begin(), variables.end(), - [variable](const std::shared_ptr &item) { - return item.get() == variable; - }), - variables.end()); + VariableSignalManager::Instance()->Remove(name); } }