Rework tray icon activation behavior yet again
[quassel.git] / src / qtui / systemtray.cpp
index 9944823..6b2b33c 100644 (file)
 #include "client.h"
 #include "iconloader.h"
 #include "qtui.h"
-#include "qtuisettings.h"
 
-SystemTray::SystemTray(QObject *parent)
+#ifdef HAVE_KDE
+#  include <KWindowInfo>
+#  include <KWindowSystem>
+#endif
+
+SystemTray::SystemTray(QWidget *parent)
 : QObject(parent),
   _mode(Invalid),
   _state(Passive),
-  _inhibitActivation(false),
   _passiveIcon(DesktopIcon("quassel_inactive")),
   _activeIcon(DesktopIcon("quassel")),
   _needsAttentionIcon(DesktopIcon("quassel_message")),
-  _trayMenu(0)
+  _trayMenu(0),
+  _associatedWidget(parent)
 {
-  qApp->installEventFilter(this);
+  Q_ASSERT(parent);
 }
 
 SystemTray::~SystemTray() {
   _trayMenu->deleteLater();
 }
 
+QWidget *SystemTray::associatedWidget() const {
+  return _associatedWidget;
+}
+
 void SystemTray::setTrayMenu(QMenu *menu) {
   if(menu)
     _trayMenu = menu;
@@ -59,7 +67,6 @@ void SystemTray::setTrayMenu(QMenu *menu) {
   _trayMenu->addSeparator();
   _trayMenu->addAction(coll->action("Quit"));
 #endif /* HAVE_KDE */
-
 }
 
 void SystemTray::setMode(Mode mode_) {
@@ -119,10 +126,6 @@ void SystemTray::showMessage(const QString &title, const QString &message, Messa
   Q_UNUSED(millisecondsTimeoutHint)
 }
 
-bool SystemTray::eventFilter(QObject *obj, QEvent *event) {
-  Q_UNUSED(obj);
-  if(event->type() == QEvent::MouseButtonRelease) {
-    _inhibitActivation = false;
-  }
-  return false;
+void SystemTray::activate(SystemTray::ActivationReason reason) {
+  emit activated(reason);
 }