X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=8e11a291570ffae9e686fd50e3cde66b3ff73606;hp=dbcbd853bfeb1e64a2cfcb623fe8f3b3eeeee7e7;hb=d5213ee34d58ffeeeb99d750d58034ee31c1e9ae;hpb=d6776e3276f91e2161836f82dfa8caebe596286d diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index dbcbd853..8e11a291 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -509,10 +509,8 @@ void MainWin::setupSystray() { } #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 - } 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()) { - toggleVisibility(); - event->ignore(); + hideToTray(); + event->accept(); } } } @@ -686,7 +684,7 @@ void MainWin::closeEvent(QCloseEvent *event) { QtUiApplication* app = qobject_cast qApp; Q_ASSERT(app); if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) { - toggleVisibility(); + toggleMinimizedToTray(); event->ignore(); } else { event->accept(); @@ -694,36 +692,32 @@ void MainWin::closeEvent(QCloseEvent *event) { } } -void MainWin::systrayActivated( QSystemTrayIcon::ActivationReason activationReason) { +void MainWin::systrayActivated(QSystemTrayIcon::ActivationReason activationReason) { if(activationReason == QSystemTrayIcon::Trigger) { - toggleVisibility(); + toggleMinimizedToTray(); } } -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(); +} +void MainWin::toggleMinimizedToTray() { + if(windowState() & Qt::WindowMinimized) { + // restore + setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); + show(); + raise(); } else { - if(systemTrayIcon()->isSystemTrayAvailable ()) { - clearFocus(); - hide(); - if(!systemTrayIcon()->isVisible()) { - systemTrayIcon()->show(); - } - } else { - lower(); - } + setWindowState((windowState() & ~Qt::WindowActive) | Qt::WindowMinimized); + hideToTray(); } }