diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 275fae88a..f06ea1314 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -804,6 +804,7 @@ Basic.MainMenu.View.SceneListMode="Scene List Mode"
Basic.MainMenu.Docks="&Docks"
Basic.MainMenu.Docks.ResetDocks="&Reset Docks"
Basic.MainMenu.Docks.LockDocks="&Lock Docks"
+Basic.MainMenu.Docks.SideDocks="&Full-height docks"
Basic.MainMenu.Docks.CustomBrowserDocks="&Custom Browser Docks..."
# basic mode profile/scene collection menus
diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui
index 6c55f4c42..d70335508 100644
--- a/UI/forms/OBSBasic.ui
+++ b/UI/forms/OBSBasic.ui
@@ -720,6 +720,7 @@
Basic.MainMenu.Docks
+
@@ -2196,6 +2197,17 @@
Basic.MainMenu.Docks.LockDocks
+
+
+ true
+
+
+ false
+
+
+ Basic.MainMenu.Docks.SideDocks
+
+
Basic.MainMenu.Help.HelpPortal
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
index 97ad0806b..4d35a5160 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
@@ -2188,6 +2188,13 @@ void OBSBasic::OBSInit()
ui->lockDocks->setChecked(docksLocked);
ui->lockDocks->blockSignals(false);
+ bool sideDocks = config_get_bool(App()->GlobalConfig(), "BasicWindow",
+ "SideDocks");
+ on_sideDocks_toggled(sideDocks);
+ ui->sideDocks->blockSignals(true);
+ ui->sideDocks->setChecked(sideDocks);
+ ui->sideDocks->blockSignals(false);
+
SystemTray(true);
TaskbarOverlayInit();
@@ -2916,6 +2923,8 @@ OBSBasic::~OBSBasic()
"PreviewProgramMode", IsPreviewProgramMode());
config_set_bool(App()->GlobalConfig(), "BasicWindow", "DocksLocked",
ui->lockDocks->isChecked());
+ config_set_bool(App()->GlobalConfig(), "BasicWindow", "SideDocks",
+ ui->sideDocks->isChecked());
config_save_safe(App()->GlobalConfig(), "tmp", nullptr);
#ifdef BROWSER_AVAILABLE
@@ -9410,6 +9419,21 @@ void OBSBasic::on_lockDocks_toggled(bool lock)
}
}
+void OBSBasic::on_sideDocks_toggled(bool side)
+{
+ if (side) {
+ setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
+ setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
+ setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
+ setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
+ } else {
+ setCorner(Qt::TopLeftCorner, Qt::TopDockWidgetArea);
+ setCorner(Qt::TopRightCorner, Qt::TopDockWidgetArea);
+ setCorner(Qt::BottomLeftCorner, Qt::BottomDockWidgetArea);
+ setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea);
+ }
+}
+
void OBSBasic::on_resetUI_triggered()
{
on_resetDocks_triggered();
diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp
index 86509213d..f4de8c2b4 100644
--- a/UI/window-basic-main.hpp
+++ b/UI/window-basic-main.hpp
@@ -1158,6 +1158,7 @@ private slots:
void on_resetDocks_triggered(bool force = false);
void on_lockDocks_toggled(bool lock);
void on_multiviewProjectorWindowed_triggered();
+ void on_sideDocks_toggled(bool side);
void PauseToggled();