diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 1bfaac458..d51588ac5 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -194,9 +194,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); @@ -1383,6 +1380,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) @@ -1540,6 +1543,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 229106c52..8effd06f4 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -160,6 +160,7 @@ private: static const QString BaseWindowTitle; void saveWindowInformation(); + void restoreWindowInformation(); bool saveLastDatabases(); bool isTrayIconEnabled() const; void customOpenUrl(QString url); @@ -192,6 +193,7 @@ private: Q_DISABLE_COPY(MainWindow) + bool m_windowInformationRestored = false; bool m_appExitCalled = false; bool m_appExiting = false; bool m_restartRequested = false;