diff options
| author | 2009-03-25 12:25:48 +0000 | |
|---|---|---|
| committer | 2009-03-25 12:25:48 +0000 | |
| commit | 5fba6f7bda015a2c6a9a4a85ca971493a0bf5795 (patch) | |
| tree | bdbb3de793d9347add5beb0cd21569839fcf1d05 /src | |
| parent | fixed module completion (diff) | |
| download | KVIrc-5fba6f7bda015a2c6a9a4a85ca971493a0bf5795.tar.gz KVIrc-5fba6f7bda015a2c6a9a4a85ca971493a0bf5795.tar.bz2 KVIrc-5fba6f7bda015a2c6a9a4a85ca971493a0bf5795.zip | |
reworked fix for #383, some gcc 4.3 noise fix
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@3163 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvirc/kernel/kvi_irccontext.cpp | 4 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_ircsocket.cpp | 2 | ||||
| -rw-r--r-- | src/kvirc/sparser/kvi_sp_literal.cpp | 76 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_ircview.cpp | 6 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_window.cpp | 10 |
5 files changed, 52 insertions, 46 deletions
diff --git a/src/kvirc/kernel/kvi_irccontext.cpp b/src/kvirc/kernel/kvi_irccontext.cpp index fb999e12d..08ea83234 100644 --- a/src/kvirc/kernel/kvi_irccontext.cpp +++ b/src/kvirc/kernel/kvi_irccontext.cpp @@ -702,8 +702,8 @@ void KviIrcContext::connectionTerminated() // we consider it unexpected when we haven't sent a QUIT message and we're connected // or alternatively when a simulation of such a termination is requested (this is used to keep the queries open etc..) - bool bUnexpectedDisconnect = (!(connection()->stateData()->sentQuit())) && (m_eState == KviIrcContext::Connected) || - connection()->stateData()->simulateUnexpectedDisconnect(); + bool bUnexpectedDisconnect = (!(connection()->stateData()->sentQuit())) && ((m_eState == KviIrcContext::Connected) || + connection()->stateData()->simulateUnexpectedDisconnect()); QString szChannels,szProtectedChannels,szPasswords,szCurPass,szCurChan; diff --git a/src/kvirc/kernel/kvi_ircsocket.cpp b/src/kvirc/kernel/kvi_ircsocket.cpp index 75b714bf9..a22e632ea 100644 --- a/src/kvirc/kernel/kvi_ircsocket.cpp +++ b/src/kvirc/kernel/kvi_ircsocket.cpp @@ -1695,7 +1695,7 @@ bool KviIrcSocket::queue_removeMessage() void KviIrcSocket::queue_removeAllMessages() { if(m_pSendQueueHead) - while(queue_removeMessage()); + while(queue_removeMessage()) {} } void KviIrcSocket::flushSendQueue() diff --git a/src/kvirc/sparser/kvi_sp_literal.cpp b/src/kvirc/sparser/kvi_sp_literal.cpp index 21794198e..2da13eb8d 100644 --- a/src/kvirc/sparser/kvi_sp_literal.cpp +++ b/src/kvirc/sparser/kvi_sp_literal.cpp @@ -1056,6 +1056,11 @@ void KviServerParser::parseLiteralNotice(KviIrcMessage *msg) msg->decodeAndSplitPrefix(szNick,szUser,szHost); KviConsole * console = msg->console(); + bool bIsServerNotice = false; + + //Check is it's a server notice (szNick = irc.xxx.net) + if(szHost == "*" && szUser == "*" && szNick.indexOf('.') != -1) + bIsServerNotice = true; // FIXME: "DEDICATED CTCP WINDOW ?" @@ -1099,8 +1104,8 @@ void KviServerParser::parseLiteralNotice(KviIrcMessage *msg) } } - // Normal NOTICE - if(IS_ME(msg,szTarget)) + // Normal NOTICE (directed to my nickname) + if(IS_ME(msg,szTarget) && !bIsServerNotice) { // Nickserv nick identification routine QString szMsgText = msg->connection()->decodeText(msg->safeTrailing()); @@ -1305,8 +1310,37 @@ void KviServerParser::parseLiteralNotice(KviIrcMessage *msg) chan = msg->connection()->findChannel(szTarget); } - if(chan) + if(!chan) { + if(bIsServerNotice) + { + //SERVER NOTICE DIRECTED TO A CHANNEL (EG. &servers, &kills on ircd) + // FIXME: "Dedicated window for server notices ?" + QString szMsgText = msg->connection()->decodeText(msg->safeTrailing()); + if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnServerNotice,console,szNick,szMsgText)) + msg->setHaltOutput(); + if(!msg->haltOutput()) + { + KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerNoticesToActiveWindow) ? + console->activeWindow() : (KviWindow *)(console); + pOut->output(KVI_OUT_SERVERNOTICE,"[\r!s\r%Q\r]: %Q",&szNick,&szMsgText); + } + return; + } else { + //UNKNOWN NOTICE TYPE + if(!msg->haltOutput()) + { + KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolOperatorMessagesToActiveWindow) ? + console->activeWindow() : (KviWindow *)(console); + QString szBroad; + QString szMsgText = msg->connection()->decodeText(msg->safeTrailing()); + KviQString::sprintf(szBroad,"[>> %Q] %Q",&szOriginalTarget,&szMsgText); + console->outputPrivmsg(pOut,KVI_OUT_BROADCASTNOTICE,szNick,szUser,szHost,szBroad,0); + return; + } + } + } else { + //CHANNEL NOTICE chan->userAction(szNick,szUser,szHost,KVI_USERACTION_NOTICE); KviStr szBuffer; const char * txtptr; int msgtype; @@ -1326,42 +1360,6 @@ void KviServerParser::parseLiteralNotice(KviIrcMessage *msg) console->outputPrivmsg(chan,msgtype,szNick,szUser,szHost,szMsgText,0); } } - return; - } - - //server notice - if(szHost == "*") - { - if(szUser == "*") - { - if(szNick.indexOf('.') != -1) - { - // server notice - // FIXME: "Dedicated window for server notices ?" - QString szMsgText = msg->connection()->decodeText(msg->safeTrailing()); - if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnServerNotice,console,szNick,szMsgText)) - msg->setHaltOutput(); - if(!msg->haltOutput()) - { - KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolServerNoticesToActiveWindow) ? - console->activeWindow() : (KviWindow *)(console); - pOut->output(KVI_OUT_SERVERNOTICE,"[\r!s\r%Q\r]: %Q",&szNick,&szMsgText); - } - return; - } - } - } - - //not better specified notice - if(!msg->haltOutput()) - { - KviWindow * pOut = KVI_OPTION_BOOL(KviOption_boolOperatorMessagesToActiveWindow) ? - console->activeWindow() : (KviWindow *)(console); - QString szBroad; - QString szMsgText = msg->connection()->decodeText(msg->safeTrailing()); - KviQString::sprintf(szBroad,"[>> %Q] %Q",&szOriginalTarget,&szMsgText); - console->outputPrivmsg(pOut,KVI_OUT_BROADCASTNOTICE,szNick,szUser,szHost,szBroad,0); - return; } } diff --git a/src/kvirc/ui/kvi_ircview.cpp b/src/kvirc/ui/kvi_ircview.cpp index 424de07fa..04355c2d9 100644 --- a/src/kvirc/ui/kvi_ircview.cpp +++ b/src/kvirc/ui/kvi_ircview.cpp @@ -2547,6 +2547,7 @@ KviIrcViewWrappedBlock * KviIrcView::getLinkUnderMouse(int xPos,int yPos,QRect * while(1) { if(l->pBlocks[iEndOfLInk].pChunk) + { if(l->pBlocks[iEndOfLInk].pChunk->type != KVI_TEXT_UNESCAPE) { switch(l->pBlocks[iEndOfLInk].pChunk->type) @@ -2571,10 +2572,11 @@ KviIrcViewWrappedBlock * KviIrcView::getLinkUnderMouse(int xPos,int yPos,QRect * break; } szLink.append(l->szText.mid(l->pBlocks[iEndOfLInk].block_start,l->pBlocks[iEndOfLInk].block_len)); - } else + } else { break; + } + } iEndOfLInk++; - } *linkText=szLink; // grab the rest of the link visible string diff --git a/src/kvirc/ui/kvi_window.cpp b/src/kvirc/ui/kvi_window.cpp index 525a37126..4de13141e 100644 --- a/src/kvirc/ui/kvi_window.cpp +++ b/src/kvirc/ui/kvi_window.cpp @@ -1370,14 +1370,20 @@ void KviWindow::preprocessMessage(QString & szMessage) tmp = KviMircCntrl::stripControlBytes(tmp); tmp.trimmed(); if(m_pConsole) + { if(m_pConsole->connection()) + { if(m_pConsole->connection()->serverInfo()->supportedChannelTypes().contains(tmp[0])) + { if((*it)==tmp) - *it=QString("\r!c\r%1\r").arg(*it); - else { + *it=QString("\r!c\r%1\r").arg(*it); + } else { *it=QString("\r!c%1\r%2\r").arg(tmp).arg(*it); } + } + } + } } szMessage=strings.join(" "); } |
