From d92f9b1f4919c507bfedb916efd37c424975fa6e Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sat, 15 Nov 2025 14:48:50 +0100 Subject: [PATCH] Correctly restore window geometry when minimised to tray on startup Fixes #10537 Fixes #11982 --- src/gui/MainWindow.cpp | 15 ++++++++++++--- src/gui/MainWindow.h | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 8ec4a83fe..e8f9fc412 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -188,9 +188,6 @@ MainWindow::MainWindow() databaseLockButton->setPopupMode(QToolButton::MenuButtonPopup); } - restoreGeometry(config()->get(Config::GUI_MainWindowGeometry).toByteArray()); - restoreState(config()->get(Config::GUI_MainWindowState).toByteArray()); - connect(m_ui->tabWidget, &DatabaseTabWidget::databaseLocked, this, &MainWindow::databaseLocked); connect(m_ui->tabWidget, &DatabaseTabWidget::databaseUnlocked, this, &MainWindow::databaseUnlocked); connect(m_ui->tabWidget, &DatabaseTabWidget::activeDatabaseChanged, this, &MainWindow::activeDatabaseChanged); @@ -1387,6 +1384,12 @@ void MainWindow::showEvent(QShowEvent* event) // Qt Hack - Prevent white flicker when showing window QTimer::singleShot(50, this, [=] { setProperty("windowOpacity", 1.0); }); #endif + + // Restore geometry and window state only on the first showEvent to prevent issues with minimized tray startup + if (!m_windowInformationRestored) { + restoreWindowInformation(); + m_windowInformationRestored = true; + } } void MainWindow::hideEvent(QHideEvent* event) @@ -1532,6 +1535,12 @@ void MainWindow::saveWindowInformation() } } +void MainWindow::restoreWindowInformation() +{ + restoreGeometry(config()->get(Config::GUI_MainWindowGeometry).toByteArray()); + restoreState(config()->get(Config::GUI_MainWindowState).toByteArray()); +} + bool MainWindow::saveLastDatabases() { if (config()->get(Config::OpenPreviousDatabasesOnStartup).toBool()) { diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h index fbd3b1408..73deb0bd9 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -159,6 +159,7 @@ private: static const QString BaseWindowTitle; void saveWindowInformation(); + void restoreWindowInformation(); bool saveLastDatabases(); bool isTrayIconEnabled() const; void customOpenUrl(QString url); @@ -190,6 +191,7 @@ private: Q_DISABLE_COPY(MainWindow) + bool m_windowInformationRestored = false; bool m_appExitCalled = false; bool m_appExiting = false; bool m_restartRequested = false;