From e51adb0fdf35d94323f841a82d666dc90bec220e Mon Sep 17 00:00:00 2001 From: jp9000 Date: Sun, 16 Sep 2018 10:02:43 -0700 Subject: [PATCH] UI: Undo/fix stats dock changes to main window The stats dock was incorrectly added to the .ui file, causing the stats dock to show by default on startup, and just generally causing a bad default startup UI appearance. This fixes that by adding the stats dock programmatically/dynamically instead of modifying the .ui file. --- UI/forms/OBSBasic.ui | 25 +++++-------------------- UI/window-basic-main.cpp | 37 ++++++++++++++++++++++++++++++------- UI/window-basic-main.hpp | 1 + 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui index fcd88076a..bc1923469 100644 --- a/UI/forms/OBSBasic.ui +++ b/UI/forms/OBSBasic.ui @@ -7,7 +7,7 @@ 0 0 - 1238 + 1079 730 @@ -105,8 +105,8 @@ 0 0 - 1238 - 22 + 1079 + 21 @@ -644,7 +644,7 @@ 0 0 - 78 + 230 16 @@ -698,7 +698,7 @@ 0 0 16 - 28 + 230 @@ -1101,21 +1101,6 @@ - - - - 168 - 103 - - - - Basic.Stats - - - 2 - - - diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 7e88902a4..64ca36b36 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -182,6 +182,15 @@ OBSBasic::OBSBasic(QWidget *parent) startingDockLayout = saveState(); + statsDock = new QDockWidget(); + statsDock->setObjectName(QStringLiteral("statsDock")); + statsDock->setFeatures(QDockWidget::AllDockWidgetFeatures); + statsDock->setWindowTitle(QTStr("Basic.Stats")); + addDockWidget(Qt::BottomDockWidgetArea, statsDock); + statsDock->setVisible(false); + statsDock->setFloating(true); + statsDock->resize(700, 200); + copyActionsDynamicProperties(); char styleSheetPath[512]; @@ -306,7 +315,7 @@ OBSBasic::OBSBasic(QWidget *parent) assignDockToggle(ui->mixerDock, ui->toggleMixer); assignDockToggle(ui->transitionsDock, ui->toggleTransitions); assignDockToggle(ui->controlsDock, ui->toggleControls); - assignDockToggle(ui->statsDock, ui->toggleStats); + assignDockToggle(statsDock, ui->toggleStats); //hide all docking panes ui->toggleScenes->setChecked(false); @@ -316,6 +325,8 @@ OBSBasic::OBSBasic(QWidget *parent) ui->toggleControls->setChecked(false); ui->toggleStats->setChecked(false); + QPoint curPos; + //restore parent window geometry const char *geometry = config_get_string(App()->GlobalConfig(), "BasicWindow", "geometry"); @@ -332,7 +343,19 @@ OBSBasic::OBSBasic(QWidget *parent) Qt::AlignCenter, size(), rect)); } + + curPos = pos(); + } else { + QRect desktopRect = QGuiApplication::primaryScreen()->geometry(); + QSize adjSize = desktopRect.size() / 2 - size() / 2; + curPos = QPoint(adjSize.width(), adjSize.height()); } + + QPoint curSize(width(), height()); + QPoint statsDockSize(statsDock->width(), statsDock->height()); + QPoint statsDockPos = curSize / 2 - statsDockSize / 2; + QPoint newPos = curPos + statsDockPos; + statsDock->move(newPos); } static void SaveAudioDevice(const char *name, int channel, obs_data_t *parent, @@ -1595,8 +1618,8 @@ void OBSBasic::OBSInit() #endif /* setup stats dock */ - OBSBasicStats *statsDlg = new OBSBasicStats(ui->statsDock, false); - ui->statsDock->setWidget(statsDlg); + OBSBasicStats *statsDlg = new OBSBasicStats(statsDock, false); + statsDock->setWidget(statsDlg); const char *dockStateStr = config_get_string(App()->GlobalConfig(), "BasicWindow", "DockState"); @@ -6121,8 +6144,7 @@ void OBSBasic::on_resetUI_triggered() ui->sourcesDock, ui->mixerDock, ui->transitionsDock, - ui->controlsDock, - ui->statsDock + ui->controlsDock }; QList sizes { @@ -6138,7 +6160,8 @@ void OBSBasic::on_resetUI_triggered() ui->mixerDock->setVisible(true); ui->transitionsDock->setVisible(true); ui->controlsDock->setVisible(true); - ui->statsDock->setVisible(true); + statsDock->setVisible(false); + statsDock->setFloating(true); resizeDocks(docks, {cy, cy, cy, cy, cy}, Qt::Vertical); resizeDocks(docks, sizes, Qt::Horizontal); @@ -6156,7 +6179,7 @@ void OBSBasic::on_lockUI_toggled(bool lock) ui->mixerDock->setFeatures(features); ui->transitionsDock->setFeatures(features); ui->controlsDock->setFeatures(features); - ui->statsDock->setFeatures(features); + statsDock->setFeatures(features); } void OBSBasic::on_toggleListboxToolbars_toggled(bool visible) diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index b026bc43f..6171823be 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -149,6 +149,7 @@ private: QPointer transformWindow; QPointer advAudioWindow; QPointer filters; + QPointer statsDock; QPointer about; QPointer cpuUsageTimer;