From e0e2cc57a0a775163705a274b059453abcf6b263 Mon Sep 17 00:00:00 2001 From: Shaolin Date: Fri, 16 Mar 2018 18:55:56 -0300 Subject: [PATCH] UI: Add option to toggle multiview mouse switching --- UI/data/locale/en-US.ini | 1 + UI/forms/OBSBasicSettings.ui | 10 ++++++++++ UI/obs-app.cpp | 3 +++ UI/window-basic-settings.cpp | 10 ++++++++++ UI/window-projector.cpp | 8 ++++++++ 5 files changed, 32 insertions(+) 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;