diff --git a/frontend/OBSApp.cpp b/frontend/OBSApp.cpp index fb5f8dd20f634d..bae69309eb6103 100644 --- a/frontend/OBSApp.cpp +++ b/frontend/OBSApp.cpp @@ -362,7 +362,7 @@ void OBSApp::InitUserConfigDefaults() config_set_default_bool(userConfig, "BasicWindow", "ShowContextToolbars", true); config_set_default_bool(userConfig, "BasicWindow", "StudioModeLabels", true); - config_set_default_bool(userConfig, "BasicWindow", "VerticalVolControl", false); + config_set_default_bool(userConfig, "BasicWindow", "VerticalVolControl", true); config_set_default_bool(userConfig, "BasicWindow", "MultiviewMouseSwitch", true); diff --git a/frontend/forms/OBSBasic.ui b/frontend/forms/OBSBasic.ui index e3c0600e59104e..82d125c2883567 100644 --- a/frontend/forms/OBSBasic.ui +++ b/frontend/forms/OBSBasic.ui @@ -7,8 +7,8 @@ 0 0 - 1086 - 729 + 1280 + 960 @@ -703,7 +703,7 @@ 0 0 - 1086 + 1280 22 @@ -1289,7 +1289,7 @@ 0 0 - 322 + 380 16 @@ -2213,7 +2213,7 @@ true - false + true Basic.MainMenu.Docks.SideDocks diff --git a/frontend/widgets/OBSBasic.cpp b/frontend/widgets/OBSBasic.cpp index b0698b29b54755..28d629aa01f362 100644 --- a/frontend/widgets/OBSBasic.cpp +++ b/frontend/widgets/OBSBasic.cpp @@ -285,7 +285,6 @@ OBSBasic::OBSBasic(QWidget *parent) : OBSMainWindow(parent), undo_s(ui), ui(new controlsDock->setWindowTitle(QTStr("Basic.Main.Controls")); /* Parenting is done there so controls will be deleted alongside controlsDock */ controlsDock->setWidget(controls); - addDockWidget(Qt::BottomDockWidgetArea, controlsDock); connect(controls, &OBSBasicControls::StreamButtonClicked, this, &OBSBasic::StreamActionTriggered); @@ -342,6 +341,17 @@ OBSBasic::OBSBasic(QWidget *parent) : OBSMainWindow(parent), undo_s(ui), ui(new connect(ui->transitionDuration, &QSpinBox::valueChanged, this, [this](int value) { SetTransitionDuration(value); }); + /* Main window default layout */ + setDockCornersVertical(true); + + /* Scenes and Sources dock on left + * This specific arrangement can't be set up in Qt Designer */ + addDockWidget(Qt::LeftDockWidgetArea, ui->scenesDock); + splitDockWidget(ui->scenesDock, ui->sourcesDock, Qt::Vertical); + int sideDockWidth = std::min(width() * 30 / 100, 320); + resizeDocks({ui->scenesDock, ui->sourcesDock}, {sideDockWidth, sideDockWidth}, Qt::Horizontal); + addDockWidget(Qt::BottomDockWidgetArea, controlsDock); + startingDockLayout = saveState(); statsDock = new OBSDock(); @@ -1229,10 +1239,8 @@ void OBSBasic::OBSInit() ui->lockDocks->blockSignals(false); bool sideDocks = config_get_bool(App()->GetUserConfig(), "BasicWindow", "SideDocks"); - on_sideDocks_toggled(sideDocks); - ui->sideDocks->blockSignals(true); ui->sideDocks->setChecked(sideDocks); - ui->sideDocks->blockSignals(false); + setDockCornersVertical(sideDocks); SystemTray(true); diff --git a/frontend/widgets/OBSBasic.hpp b/frontend/widgets/OBSBasic.hpp index ca213433e0beb8..9a616645cbd3ad 100644 --- a/frontend/widgets/OBSBasic.hpp +++ b/frontend/widgets/OBSBasic.hpp @@ -444,6 +444,7 @@ public slots: void RemoveDockWidget(const QString &name); bool IsDockObjectNameUsed(const QString &name); void AddCustomDockWidget(QDockWidget *dock); + void setDockCornersVertical(bool vertical); private slots: void on_resetDocks_triggered(bool force = false); diff --git a/frontend/widgets/OBSBasic_Docks.cpp b/frontend/widgets/OBSBasic_Docks.cpp index 670ed5a25f730d..dbe20bca931ba0 100644 --- a/frontend/widgets/OBSBasic_Docks.cpp +++ b/frontend/widgets/OBSBasic_Docks.cpp @@ -74,21 +74,12 @@ void OBSBasic::on_resetDocks_triggered(bool force) #undef RESET_DOCKLIST restoreState(startingDockLayout); + ui->sideDocks->setChecked(true); int cx = width(); - int cy = height(); + int bottomDocksHeight = height(); - int cx22_5 = cx * 225 / 1000; - int cx5 = cx * 5 / 100; - int cx21 = cx * 21 / 100; - - cy = cy * 225 / 1000; - - int mixerSize = cx - (cx22_5 * 2 + cx5 + cx21); - - QList docks{ui->scenesDock, ui->sourcesDock, ui->mixerDock, ui->transitionsDock, controlsDock}; - - QList sizes{cx22_5, cx22_5, mixerSize, cx5, cx21}; + bottomDocksHeight = bottomDocksHeight * 225 / 1000; ui->scenesDock->setVisible(true); ui->sourcesDock->setVisible(true); @@ -98,8 +89,13 @@ void OBSBasic::on_resetDocks_triggered(bool force) statsDock->setVisible(false); statsDock->setFloating(true); - resizeDocks(docks, {cy, cy, cy, cy, cy}, Qt::Vertical); - resizeDocks(docks, sizes, Qt::Horizontal); + QList bottomDocks{ui->mixerDock, ui->transitionsDock, controlsDock}; + + resizeDocks(bottomDocks, {bottomDocksHeight, bottomDocksHeight, bottomDocksHeight}, Qt::Vertical); + resizeDocks(bottomDocks, {cx * 45 / 100, cx * 14 / 100, cx * 16 / 100}, Qt::Horizontal); + + int sideDockWidth = std::min(width() * 30 / 100, 280); + resizeDocks({ui->scenesDock, ui->sourcesDock}, {sideDockWidth, sideDockWidth}, Qt::Horizontal); activateWindow(); } @@ -135,17 +131,9 @@ 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); - } + config_set_bool(App()->GetUserConfig(), "BasicWindow", "SideDocks", side); + + setDockCornersVertical(side); } void OBSBasic::AddDockWidget(QDockWidget *dock, Qt::DockWidgetArea area, bool extraBrowser) @@ -232,6 +220,21 @@ void OBSBasic::AddCustomDockWidget(QDockWidget *dock) extraCustomDocks.push_back(dock); } +void OBSBasic::setDockCornersVertical(bool vertical) +{ + if (vertical) { + 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::RepairCustomExtraDockName() { QDockWidget *dock = reinterpret_cast(sender()); diff --git a/plugins/obs-browser b/plugins/obs-browser index a776dd6a1a0ded..5ee805695d337c 160000 --- a/plugins/obs-browser +++ b/plugins/obs-browser @@ -1 +1 @@ -Subproject commit a776dd6a1a0ded4a8a723f2f572f3f8a9707f5a8 +Subproject commit 5ee805695d337cbea4180fd25e5b86bfff4af33b diff --git a/plugins/obs-websocket b/plugins/obs-websocket index 1c9306b1e20070..c542622d7b6d41 160000 --- a/plugins/obs-websocket +++ b/plugins/obs-websocket @@ -1 +1 @@ -Subproject commit 1c9306b1e200704ebe192e06c893dfc06b097c43 +Subproject commit c542622d7b6d41ce5875f54efdab1d4ac2967ef4