소스 검색

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 년 전
부모
커밋
e51adb0fdf
3개의 변경된 파일36개의 추가작업 그리고 27개의 파일을 삭제
  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;