diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 3298c8b6c..b0e1a1925 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -281,7 +281,7 @@ MainWindow::MainWindow() connect(m_ui->passwordGeneratorWidget, SIGNAL(dialogTerminated()), SLOT(closePasswordGen())); connect(m_ui->actionAbout, SIGNAL(triggered()), SLOT(showAboutDialog())); - + #ifdef Q_OS_MAC setUnifiedTitleAndToolBarOnMac(true); #endif @@ -563,7 +563,7 @@ void MainWindow::closeEvent(QCloseEvent* event) if (minimizeOnClose && !appExitCalled) { event->ignore(); - toggleWindow(); + hideWindow(); if (config()->get("security/lockdatabaseminimize").toBool()) { m_ui->tabWidget->lockDatabases(); @@ -728,22 +728,27 @@ void MainWindow::trayIconTriggered(QSystemTrayIcon::ActivationReason reason) } } +void MainWindow::hideWindow() +{ + setWindowState(windowState() | Qt::WindowMinimized); + QTimer::singleShot(0, this, SLOT(hide())); + + if (config()->get("security/lockdatabaseminimize").toBool()) { + m_ui->tabWidget->lockDatabases(); + } +} + void MainWindow::toggleWindow() { if ((QApplication::activeWindow() == this) && isVisible() && !isMinimized()) { - setWindowState(windowState() | Qt::WindowMinimized); - QTimer::singleShot(0, this, SLOT(hide())); - - if (config()->get("security/lockdatabaseminimize").toBool()) { - m_ui->tabWidget->lockDatabases(); - } + hideWindow(); } else { ensurePolished(); setWindowState(windowState() & ~Qt::WindowMinimized); show(); raise(); activateWindow(); - + #if defined(Q_OS_LINUX) && ! defined(QT_NO_DBUS) // re-register global D-Bus menu (needed on Ubuntu with Unity) // see https://github.com/keepassxreboot/keepassxc/issues/271 diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h index ab9924a75..ff92260f4 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -68,6 +68,7 @@ private Q_SLOTS: void rememberOpenDatabases(const QString& filePath); void applySettingsChanges(); void trayIconTriggered(QSystemTrayIcon::ActivationReason reason); + void hideWindow(); void toggleWindow(); void lockDatabasesAfterInactivity(); void repairDatabase();