Browse Source

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.
jp9000 7 years ago
parent
commit
e51adb0fdf
3 changed files with 36 additions and 27 deletions
  1. 5 20
      UI/forms/OBSBasic.ui
  2. 30 7
      UI/window-basic-main.cpp
  3. 1 0
      UI/window-basic-main.hpp

+ 5 - 20
UI/forms/OBSBasic.ui

@@ -7,7 +7,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>1238</width>
+    <width>1079</width>
     <height>730</height>
    </rect>
   </property>
@@ -105,8 +105,8 @@
     <rect>
      <x>0</x>
      <y>0</y>
-     <width>1238</width>
-     <height>22</height>
+     <width>1079</width>
+     <height>21</height>
     </rect>
    </property>
    <widget class="QMenu" name="menu_File">
@@ -644,7 +644,7 @@
           <rect>
            <x>0</x>
            <y>0</y>
-           <width>78</width>
+           <width>230</width>
            <height>16</height>
           </rect>
          </property>
@@ -698,7 +698,7 @@
            <x>0</x>
            <y>0</y>
            <width>16</width>
-           <height>28</height>
+           <height>230</height>
           </rect>
          </property>
          <property name="sizePolicy">
@@ -1101,21 +1101,6 @@
     </layout>
    </widget>
   </widget>
-  <widget class="QDockWidget" name="statsDock">
-   <property name="minimumSize">
-    <size>
-     <width>168</width>
-     <height>103</height>
-    </size>
-   </property>
-   <property name="windowTitle">
-    <string>Basic.Stats</string>
-   </property>
-   <attribute name="dockWidgetArea">
-    <number>2</number>
-   </attribute>
-   <widget class="QWidget" name="dockWidgetContents"/>
-  </widget>
   <action name="actionAddScene">
    <property name="icon">
     <iconset resource="obs.qrc">

+ 30 - 7
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<int> 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)

+ 1 - 0
UI/window-basic-main.hpp

@@ -149,6 +149,7 @@ private:
 	QPointer<OBSBasicTransform> transformWindow;
 	QPointer<OBSBasicAdvAudio> advAudioWindow;
 	QPointer<OBSBasicFilters> filters;
+	QPointer<QDockWidget> statsDock;
 	QPointer<OBSAbout> about;
 
 	QPointer<QTimer>    cpuUsageTimer;