Browse Source

UI: Reduce settings dialog height if greater than the desktop

Co-authored-by: Warchamp7 <[email protected]>
Co-authored-by: derrod <[email protected]>
Co-authored-by: Ryan Foster <[email protected]>
tytan652 3 years ago
parent
commit
d88e788f7f
2 changed files with 15 additions and 0 deletions
  1. 14 0
      UI/window-basic-settings.cpp
  2. 1 0
      UI/window-basic-settings.hpp

+ 14 - 0
UI/window-basic-settings.cpp

@@ -4279,6 +4279,20 @@ void OBSBasicSettings::closeEvent(QCloseEvent *event)
 		event->ignore();
 }
 
+void OBSBasicSettings::showEvent(QShowEvent *event)
+{
+	QDialog::showEvent(event);
+
+	/* Reduce the height of the widget area if too tall compared to the screen
+	 * size (e.g., 720p) with potential window decoration (e.g., titlebar). */
+	const int titleBarHeight =
+		QApplication::style()->pixelMetric(QStyle::PM_TitleBarHeight);
+	const int maxHeight =
+		round(screen()->availableGeometry().height() - titleBarHeight);
+	if (size().height() >= maxHeight)
+		resize(size().width(), maxHeight);
+}
+
 void OBSBasicSettings::reject()
 {
 	if (AskIfCanCloseSettings())

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

@@ -480,6 +480,7 @@ private slots:
 
 protected:
 	virtual void closeEvent(QCloseEvent *event) override;
+	virtual void showEvent(QShowEvent *event) override;
 	void reject() override;
 
 public: