This could / should / oh well you know the drill... just test if minimize to tray...
authorMarcus Eggenberger <egs@quassel-irc.org>
Tue, 20 Jan 2009 21:31:53 +0000 (22:31 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 20 Jan 2009 21:31:59 +0000 (22:31 +0100)
src/qtui/mainwin.cpp
src/qtui/mainwin.h

index dbcbd85..4c39b12 100644 (file)
@@ -509,10 +509,8 @@ void MainWin::setupSystray() {
   }
 
 #ifndef Q_WS_MAC
   }
 
 #ifndef Q_WS_MAC
-  connect(systemTrayIcon(), SIGNAL(activated( QSystemTrayIcon::ActivationReason )),
-          this, SLOT(systrayActivated( QSystemTrayIcon::ActivationReason )));
+  connect(systemTrayIcon(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systrayActivated(QSystemTrayIcon::ActivationReason)));
 #endif
 #endif
-
 }
 
 void MainWin::changeEvent(QEvent *event) {
 }
 
 void MainWin::changeEvent(QEvent *event) {
@@ -520,8 +518,8 @@ void MainWin::changeEvent(QEvent *event) {
     if(windowState() & Qt::WindowMinimized) {
       QtUiSettings s;
       if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnMinimize").toBool()) {
     if(windowState() & Qt::WindowMinimized) {
       QtUiSettings s;
       if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnMinimize").toBool()) {
-        toggleVisibility();
-        event->ignore();
+       hideToTray();
+       event->accept();
       }
     }
   }
       }
     }
   }
@@ -686,7 +684,7 @@ void MainWin::closeEvent(QCloseEvent *event) {
   QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
   Q_ASSERT(app);
   if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
   QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
   Q_ASSERT(app);
   if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
-    toggleVisibility();
+    hideToTray();
     event->ignore();
   } else {
     event->accept();
     event->ignore();
   } else {
     event->accept();
@@ -694,37 +692,27 @@ void MainWin::closeEvent(QCloseEvent *event) {
   }
 }
 
   }
 }
 
-void MainWin::systrayActivated( QSystemTrayIcon::ActivationReason activationReason) {
+void MainWin::systrayActivated(QSystemTrayIcon::ActivationReason activationReason) {
   if(activationReason == QSystemTrayIcon::Trigger) {
   if(activationReason == QSystemTrayIcon::Trigger) {
-    toggleVisibility();
+    restoreFromTray();
   }
 }
 
   }
 }
 
-void MainWin::toggleVisibility() {
-  if(isHidden() /*|| !isActiveWindow()*/) {
-    show();
-    if(isMinimized()) {
-      if(isMaximized())
-        showMaximized();
-      else
-        showNormal();
-    }
+void MainWin::hideToTray() {
+  if(!systemTrayIcon()->isSystemTrayAvailable()) {
+    qWarning() << Q_FUNC_INFO << "was called with no SystemTray available!";
+    return;
+  }
 
 
-    raise();
-    activateWindow();
-    // setFocus(); //Qt::ActiveWindowFocusReason
+  clearFocus();
+  hide();
+  systemTrayIcon()->show();
+}
 
 
-  } else {
-    if(systemTrayIcon()->isSystemTrayAvailable ()) {
-      clearFocus();
-      hide();
-      if(!systemTrayIcon()->isVisible()) {
-        systemTrayIcon()->show();
-      }
-    } else {
-      lower();
-    }
-  }
+void MainWin::restoreFromTray() {
+  setWindowState(windowState() & ~Qt::WindowMinimized | Qt::WindowActive);
+  show();
+  raise();
 }
 
 void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) {
 }
 
 void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) {
index e3fdb61..59c0e2c 100644 (file)
@@ -149,7 +149,8 @@ class MainWin
     void setupTitleSetter();
 
     void updateIcon();
     void setupTitleSetter();
 
     void updateIcon();
-    void toggleVisibility();
+    void hideToTray();
+    void restoreFromTray();
     void enableMenus();
 
     QSystemTrayIcon *_trayIcon;
     void enableMenus();
 
     QSystemTrayIcon *_trayIcon;