From b3160a17ea1a8731c4d818ddc711d76b90464f46 Mon Sep 17 00:00:00 2001 From: thez3ro Date: Mon, 8 May 2017 23:27:54 +0200 Subject: [PATCH 1/4] enable minimize on close for macOS --- src/gui/MainWindow.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 0415f2b4e..c3ab306eb 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -660,8 +660,12 @@ void MainWindow::databaseTabChanged(int tabIndex) void MainWindow::closeEvent(QCloseEvent* event) { - bool minimizeOnClose = isTrayIconEnabled() && - config()->get("GUI/MinimizeOnClose").toBool(); + bool minimizeOnClose = config()->get("GUI/MinimizeOnClose").toBool(); +#ifndef Q_OS_MAC + // if we aren't on OS X, check if the tray is enabled. + // on OS X we are using the dock for the minimize action + minimizeOnClose = isTrayIconEnabled() && minimizeOnClose; +#endif if (minimizeOnClose && !appExitCalled) { event->ignore(); From 8d6db27b3430543e6f262a566be0cbd0331a404e Mon Sep 17 00:00:00 2001 From: thez3ro Date: Thu, 11 May 2017 13:44:08 +0200 Subject: [PATCH 2/4] add tray icon to MacOS X --- src/gui/MainWindow.cpp | 15 +++------------ src/gui/SettingsWidget.cpp | 5 ----- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index c3ab306eb..4e25a9426 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -660,13 +660,7 @@ void MainWindow::databaseTabChanged(int tabIndex) void MainWindow::closeEvent(QCloseEvent* event) { - bool minimizeOnClose = config()->get("GUI/MinimizeOnClose").toBool(); -#ifndef Q_OS_MAC - // if we aren't on OS X, check if the tray is enabled. - // on OS X we are using the dock for the minimize action - minimizeOnClose = isTrayIconEnabled() && minimizeOnClose; -#endif - if (minimizeOnClose && !appExitCalled) + if (isTrayIconEnabled() && config()->get("GUI/MinimizeOnClose").toBool() && !appExitCalled) { event->ignore(); hideWindow(); @@ -836,7 +830,9 @@ void MainWindow::trayIconTriggered(QSystemTrayIcon::ActivationReason reason) void MainWindow::hideWindow() { +#ifndef Q_OS_MAC setWindowState(windowState() | Qt::WindowMinimized); +#endif QTimer::singleShot(0, this, SLOT(hide())); if (config()->get("security/lockdatabaseminimize").toBool()) { @@ -919,13 +915,8 @@ void MainWindow::repairDatabase() bool MainWindow::isTrayIconEnabled() const { -#ifdef Q_OS_MAC - // systray not useful on OS X - return false; -#else return config()->get("GUI/ShowTrayIcon").toBool() && QSystemTrayIcon::isSystemTrayAvailable(); -#endif } void MainWindow::displayGlobalMessage(const QString& text, MessageWidget::MessageType type, bool showClosebutton) diff --git a/src/gui/SettingsWidget.cpp b/src/gui/SettingsWidget.cpp index 716eb14f1..46910a5a3 100644 --- a/src/gui/SettingsWidget.cpp +++ b/src/gui/SettingsWidget.cpp @@ -66,11 +66,6 @@ SettingsWidget::SettingsWidget(QWidget* parent) m_generalUi->generalSettingsTabWidget->removeTab(1); } -#ifdef Q_OS_MAC - // systray not useful on OS X - m_generalUi->systraySettings->setVisible(false); -#endif - connect(this, SIGNAL(accepted()), SLOT(saveSettings())); connect(this, SIGNAL(rejected()), SLOT(reject())); From 1c54d2496269cf88f9d429d3a3f9671738c6fad9 Mon Sep 17 00:00:00 2001 From: Weslly Date: Fri, 19 May 2017 00:42:31 -0300 Subject: [PATCH 3/4] Fix quit submenu on macOS tray icon --- src/gui/MainWindow.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 4e25a9426..a02d75b80 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -747,10 +747,17 @@ void MainWindow::updateTrayIcon() QAction* actionToggle = new QAction(tr("Toggle window"), menu); menu->addAction(actionToggle); +#ifdef Q_OS_MAC + QAction* actionQuit = new QAction(tr("Quit KeePassXC"), menu); + menu->addAction(actionQuit); + + connect(actionQuit, SIGNAL(triggered()), SLOT(appExit())); +#else menu->addAction(m_ui->actionQuit); connect(m_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), SLOT(trayIconTriggered(QSystemTrayIcon::ActivationReason))); +#endif connect(actionToggle, SIGNAL(triggered()), SLOT(toggleWindow())); m_trayIcon->setContextMenu(menu); From c0640e49eeed5b999739f397dee0389411394d24 Mon Sep 17 00:00:00 2001 From: thez3ro Date: Fri, 19 May 2017 14:30:09 +0200 Subject: [PATCH 4/4] revert old if structure --- src/gui/MainWindow.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index a02d75b80..ce8653e63 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -660,7 +660,9 @@ void MainWindow::databaseTabChanged(int tabIndex) void MainWindow::closeEvent(QCloseEvent* event) { - if (isTrayIconEnabled() && config()->get("GUI/MinimizeOnClose").toBool() && !appExitCalled) + bool minimizeOnClose = isTrayIconEnabled() && + config()->get("GUI/MinimizeOnClose").toBool(); + if (minimizeOnClose && !appExitCalled) { event->ignore(); hideWindow();