Correctly restore window geometry when minimised to tray on startup

Fixes #10537
Fixes #11982
This commit is contained in:
Janek Bevendorff
2025-11-15 14:48:50 +01:00
committed by Jonathan White
parent a2e7132ead
commit 1a4e9ca4e2
2 changed files with 14 additions and 3 deletions

View File

@@ -194,9 +194,6 @@ MainWindow::MainWindow()
databaseLockButton->setPopupMode(QToolButton::MenuButtonPopup); 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::databaseLocked, this, &MainWindow::databaseLocked);
connect(m_ui->tabWidget, &DatabaseTabWidget::databaseUnlocked, this, &MainWindow::databaseUnlocked); connect(m_ui->tabWidget, &DatabaseTabWidget::databaseUnlocked, this, &MainWindow::databaseUnlocked);
connect(m_ui->tabWidget, &DatabaseTabWidget::activeDatabaseChanged, this, &MainWindow::activeDatabaseChanged); 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 // Qt Hack - Prevent white flicker when showing window
QTimer::singleShot(50, this, [=] { setProperty("windowOpacity", 1.0); }); QTimer::singleShot(50, this, [=] { setProperty("windowOpacity", 1.0); });
#endif #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) 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() bool MainWindow::saveLastDatabases()
{ {
if (config()->get(Config::OpenPreviousDatabasesOnStartup).toBool()) { if (config()->get(Config::OpenPreviousDatabasesOnStartup).toBool()) {

View File

@@ -160,6 +160,7 @@ private:
static const QString BaseWindowTitle; static const QString BaseWindowTitle;
void saveWindowInformation(); void saveWindowInformation();
void restoreWindowInformation();
bool saveLastDatabases(); bool saveLastDatabases();
bool isTrayIconEnabled() const; bool isTrayIconEnabled() const;
void customOpenUrl(QString url); void customOpenUrl(QString url);
@@ -192,6 +193,7 @@ private:
Q_DISABLE_COPY(MainWindow) Q_DISABLE_COPY(MainWindow)
bool m_windowInformationRestored = false;
bool m_appExitCalled = false; bool m_appExitCalled = false;
bool m_appExiting = false; bool m_appExiting = false;
bool m_restartRequested = false; bool m_restartRequested = false;