UI: Reduce settings dialog height if greater than the desktop

Co-authored-by: Warchamp7 <warchamp2003@hotmail.com>
Co-authored-by: derrod <dennis@obsproject.com>
Co-authored-by: Ryan Foster <ryan@obsproject.com>
This commit is contained in:
tytan652 2022-09-03 11:54:25 +02:00 committed by Ryan Foster
parent dcd1bd9a80
commit d88e788f7f
2 changed files with 15 additions and 0 deletions

View file

@ -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())

View file

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