aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Fabio Bas2009-03-25 12:25:48 +0000
committerGravatar Fabio Bas2009-03-25 12:25:48 +0000
commit5fba6f7bda015a2c6a9a4a85ca971493a0bf5795 (patch)
treebdbb3de793d9347add5beb0cd21569839fcf1d05 /src
parentfixed module completion (diff)
downloadKVIrc-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.cpp4
-rw-r--r--src/kvirc/kernel/kvi_ircsocket.cpp2
-rw-r--r--src/kvirc/sparser/kvi_sp_literal.cpp76
-rw-r--r--src/kvirc/ui/kvi_ircview.cpp6
-rw-r--r--src/kvirc/ui/kvi_window.cpp10
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(" ");
}