From ed4a70c19e59658c6933b0bb012eba72417cb37d Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Thu, 14 Feb 2019 16:05:54 +0100 Subject: [PATCH] Restore on system tray icon double click --- src/qtgui/systray.cpp | 21 +++++++++++++++++++-- src/qtgui/systray.h | 2 +- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/qtgui/systray.cpp b/src/qtgui/systray.cpp index 3d08b321..f7d0d7d8 100644 --- a/src/qtgui/systray.cpp +++ b/src/qtgui/systray.cpp @@ -19,6 +19,7 @@ #include "systray.h" #include "rclmain_w.h" +#include "log.h" void RclTrayIcon::init() { @@ -27,16 +28,32 @@ void RclTrayIcon::init() connect(restoreAction, SIGNAL(triggered()), this, SLOT(onRestore())); connect(quitAction, SIGNAL(triggered()), m_mainw, SLOT(fileExit())); - QMenu *trayIconMenu = new QMenu(0); trayIconMenu->addAction(restoreAction); trayIconMenu->addAction(quitAction); setContextMenu(trayIconMenu); + + connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), + this, SLOT(onActivated(QSystemTrayIcon::ActivationReason))); } void RclTrayIcon::onRestore() { // Hide and show to restore on current desktop m_mainw->hide(); - m_mainw->show(); + m_mainw->showNormal(); +} + +void RclTrayIcon::onActivated(QSystemTrayIcon::ActivationReason reason) +{ + LOGDEB("RclTrayIcon::onActivated: reason " << reason << std::endl); + switch (reason) { + case QSystemTrayIcon::DoubleClick: + case QSystemTrayIcon::Trigger: + case QSystemTrayIcon::MiddleClick: + onRestore(); + break; + default: + return; + } } diff --git a/src/qtgui/systray.h b/src/qtgui/systray.h index f4ec946c..607370e9 100644 --- a/src/qtgui/systray.h +++ b/src/qtgui/systray.h @@ -33,7 +33,7 @@ class RclTrayIcon : public QSystemTrayIcon { } public slots: void onRestore(); - + void onActivated(QSystemTrayIcon::ActivationReason reason); private: void init(); RclMain *m_mainw;