QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
Q_ASSERT(app);
if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
- hideToTray();
+ toggleMinimizedToTray();
event->ignore();
} else {
event->accept();
void MainWin::systrayActivated(QSystemTrayIcon::ActivationReason activationReason) {
if(activationReason == QSystemTrayIcon::Trigger) {
- restoreFromTray();
+ toggleMinimizedToTray();
}
}
systemTrayIcon()->show();
}
-void MainWin::restoreFromTray() {
- setWindowState(windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
- show();
- raise();
+void MainWin::toggleMinimizedToTray() {
+ if(windowState() & Qt::WindowMinimized) {
+ // restore
+ setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
+ show();
+ raise();
+ } else {
+ setWindowState((windowState() & ~Qt::WindowActive) | Qt::WindowMinimized);
+ hideToTray();
+ }
}
void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) {