diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index a048abf91..10f0bd03f 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -572,6 +572,7 @@ Basic.Settings.General.SaveProjectors="Save projectors on exit"
Basic.Settings.General.SwitchOnDoubleClick="Transition to scene when double-clicked"
Basic.Settings.General.StudioPortraitLayout="Enable portrait/vertical layout"
Basic.Settings.General.Multiview="Multiview"
+Basic.Settings.General.Multiview.MouseSwitch="Click to switch between scenes"
Basic.Settings.General.MultiviewLayout="Multiview Layout"
Basic.Settings.General.MultiviewLayout.Horizontal.Top="Horizontal, Top (8 Scenes)"
Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="Horizontal, Bottom (8 Scenes)"
diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui
index 5a87b51bb..1406b29b9 100644
--- a/UI/forms/OBSBasicSettings.ui
+++ b/UI/forms/OBSBasicSettings.ui
@@ -616,6 +616,16 @@
+ -
+
+
+ Basic.Settings.General.Multiview.MouseSwitch
+
+
+ true
+
+
+
-
diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp
index 3eb576057..5a318e0c3 100644
--- a/UI/obs-app.cpp
+++ b/UI/obs-app.cpp
@@ -421,6 +421,9 @@ bool OBSApp::InitGlobalConfigDefaults()
config_set_default_bool(globalConfig, "BasicWindow",
"VerticalVolControl", false);
+ config_set_default_bool(globalConfig, "BasicWindow",
+ "MultiviewMouseSwitch", true);
+
#ifdef _WIN32
config_set_default_bool(globalConfig, "Audio", "DisableAudioDucking",
true);
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index 3a0d626a3..506e74be0 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -318,6 +318,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->snapDistance, DSCROLL_CHANGED,GENERAL_CHANGED);
HookWidget(ui->doubleClickSwitch, CHECK_CHANGED, GENERAL_CHANGED);
HookWidget(ui->studioPortraitLayout, CHECK_CHANGED, GENERAL_CHANGED);
+ HookWidget(ui->multiviewMouseSwitch, CHECK_CHANGED, GENERAL_CHANGED);
HookWidget(ui->multiviewLayout, COMBO_CHANGED, GENERAL_CHANGED);
HookWidget(ui->outputMode, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->streamType, COMBO_CHANGED, STREAM1_CHANGED);
@@ -1100,6 +1101,10 @@ void OBSBasicSettings::LoadGeneralSettings()
"BasicWindow", "StudioPortraitLayout");
ui->studioPortraitLayout->setChecked(studioPortraitLayout);
+ bool multiviewMouseSwitch = config_get_bool(GetGlobalConfig(),
+ "BasicWindow", "MultiviewMouseSwitch");
+ ui->multiviewMouseSwitch->setChecked(multiviewMouseSwitch);
+
ui->multiviewLayout->addItem(QTStr(
"Basic.Settings.General.MultiviewLayout.Horizontal.Top"),
static_cast(MultiviewLayout::HORIZONTAL_TOP_8_SCENES));
@@ -2704,6 +2709,11 @@ void OBSBasicSettings::SaveGeneralSettings()
main->ResetUI();
}
+ if (WidgetChanged(ui->multiviewMouseSwitch))
+ config_set_bool(GetGlobalConfig(), "BasicWindow",
+ "MultiviewMouseSwitch",
+ ui->multiviewMouseSwitch->isChecked());
+
if (WidgetChanged(ui->multiviewLayout)) {
config_set_int(GetGlobalConfig(), "BasicWindow",
"MultiviewLayout",
diff --git a/UI/window-projector.cpp b/UI/window-projector.cpp
index dc89f2543..9c3fad50f 100644
--- a/UI/window-projector.cpp
+++ b/UI/window-projector.cpp
@@ -751,6 +751,10 @@ void OBSProjector::mouseDoubleClickEvent(QMouseEvent *event)
{
OBSQTDisplay::mouseDoubleClickEvent(event);
+ if (!config_get_bool(GetGlobalConfig(), "BasicWindow",
+ "MultiviewMouseSwitch"))
+ return;
+
if (!config_get_bool(GetGlobalConfig(), "BasicWindow",
"TransitionOnDoubleClick"))
return;
@@ -783,6 +787,10 @@ void OBSProjector::mousePressEvent(QMouseEvent *event)
}
if (event->button() == Qt::LeftButton) {
+ if (!config_get_bool(GetGlobalConfig(), "BasicWindow",
+ "MultiviewMouseSwitch"))
+ return;
+
int pos = getSourceByPosition(event->x(), event->y());
if (pos < 0)
return;