diff --git a/UI/frontend-plugins/frontend-tools/auto-scene-switcher.cpp b/UI/frontend-plugins/frontend-tools/auto-scene-switcher.cpp index 9c737bf4a..999d3525c 100644 --- a/UI/frontend-plugins/frontend-tools/auto-scene-switcher.cpp +++ b/UI/frontend-plugins/frontend-tools/auto-scene-switcher.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include "auto-scene-switcher.hpp" @@ -231,13 +232,19 @@ void SceneSwitcher::on_add_clicked() int idx = FindByData(windowName); if (idx == -1) { - QListWidgetItem *item = new QListWidgetItem(text, - ui->switches); - item->setData(Qt::UserRole, v); - - lock_guard lock(switcher->m); - switcher->switches.emplace_back(source, - windowName.toUtf8().constData()); + try { + lock_guard lock(switcher->m); + switcher->switches.emplace_back(source, + windowName.toUtf8().constData()); + + QListWidgetItem *item = new QListWidgetItem(text, + ui->switches); + item->setData(Qt::UserRole, v); + } catch (const regex_error &) { + QMessageBox::warning(this, + obs_module_text("InvalidRegex.Title"), + obs_module_text("InvalidRegex.Text")); + } } else { QListWidgetItem *item = ui->switches->item(idx); item->setText(text); diff --git a/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini b/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini index 63a4673f0..154241d44 100644 --- a/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini +++ b/UI/frontend-plugins/frontend-tools/data/locale/en-US.ini @@ -4,6 +4,8 @@ SceneSwitcher.OnNoMatch.DontSwitch="Don't switch" SceneSwitcher.OnNoMatch.SwitchTo="Switch to:" SceneSwitcher.CheckInterval="Check active window title every:" SceneSwitcher.ActiveOrNotActive="Scene Switcher is:" +InvalidRegex.Title="Invalid Regular Expression" +InvalidRegex.Text="The regular expression that you entered is invalid." Active="Active" Inactive="Inactive" Start="Start"