void KviMainWindow::changeEvent(QEvent * e) { #ifndef COMPILE_ON_MAC // For Qt5 this should be used to minimize to tray if( (e->type() == QEvent::WindowStateChange) && (windowState() & Qt::WindowMinimized) && KVI_OPTION_BOOL(KviOption_boolMinimizeInTray) && e->spontaneous() ) { if(!trayIcon()) { executeInternalCommand(KVI_INTERNALCOMMAND_TRAYICON_SHOW); } if(trayIcon()) { QWindowStateChangeEvent * ev = (QWindowStateChangeEvent *)e; KVI_OPTION_BOOL(KviOption_boolFrameIsMaximized) = ev->oldState() & Qt::WindowMaximized; QTimer::singleShot( 0, this, SLOT(hide()) ); } return; } #endif if (e->type() == QEvent::ActivationChange) { //WINDOW (DE)ACTIVATION // if we have just been activated by the WM // then update the active window task bar item // It will then reset its highlight state // and hopefully make the dock widget work correctly // in this case. // This will also trigger the OnWindowActivated event :) if(isActiveWindow()) { if(g_pActiveWindow) childWindowActivated(g_pActiveWindow, true); } else { if(g_pActiveWindow) g_pActiveWindow->lostUserFocus(); } } KviTalMainWindow::changeEvent(e); }
// For Qt4, see changeEvent method for Qt5 void KviMainWindow::hideEvent(QHideEvent * e) { #ifndef COMPILE_ON_MAC if(KVI_OPTION_BOOL(KviOption_boolMinimizeInTray) && e->spontaneous()) { if(!trayIcon()) { executeInternalCommand(KVI_INTERNALCOMMAND_TRAYICON_SHOW); } if(trayIcon()) { KVI_OPTION_BOOL(KviOption_boolFrameIsMaximized) = isMaximized(); QTimer::singleShot(0, this, SLOT(hide())); } return; } #endif }
void KviMainWindow::closeEvent(QCloseEvent * e) { //check if the user just want us to minimize in tray; if we're not the sender //of this signal (sender!=0), it has been generated by a "quit" action in a menu if(KVI_OPTION_BOOL(KviOption_boolCloseInTray) && QObject::sender() == nullptr && e->spontaneous()) { if(!trayIcon()) { executeInternalCommand(KVI_INTERNALCOMMAND_TRAYICON_SHOW); } if(trayIcon()) { e->ignore(); KVI_OPTION_BOOL(KviOption_boolFrameIsMaximized) = isMaximized(); QTimer::singleShot(0, this, SLOT(hide())); } return; } if(KVI_OPTION_BOOL(KviOption_boolConfirmCloseWhenThereAreConnections)) { // check for running connections bool bGotRunningConnection = false; for(KviWindow * w = m_pWinList->first(); w; w = m_pWinList->next()) { if(w->type() == KviWindow::Console) { if(((KviConsoleWindow *)w)->connectionInProgress()) { bGotRunningConnection = true; break; } } } if(bGotRunningConnection) { QString txt; txt += __tr2qs("There are active connections, are you sure you wish to quit KVIrc?"); switch(QMessageBox::warning(this, __tr2qs("Confirm Close - KVIrc"), txt, __tr2qs("&Yes"), __tr2qs("&Always"), __tr2qs("&No"), 2, 2)) { case 0: // ok to close break; case 1: // ok to close but don't ask again KVI_OPTION_BOOL(KviOption_boolConfirmCloseWhenThereAreConnections) = false; break; case 2: e->ignore(); return; break; } } } e->accept(); if(g_pApp) { g_pApp->setKviClosingDown(); g_pApp->quit(); } }