Changing the behavior how Quassel Events are processed.
[quassel.git] / src / core / ctcpparser.cpp
index 7619a69..f4177c6 100644 (file)
@@ -39,6 +39,8 @@ CtcpParser::CtcpParser(CoreSession *coreSession, QObject *parent)
   QByteArray XQUOTE = QByteArray("\134");
   _ctcpXDelimDequoteHash[XQUOTE + XQUOTE] = XQUOTE;
   _ctcpXDelimDequoteHash[XQUOTE + QByteArray("a")] = XDELIM;
+
+  connect(this, SIGNAL(newEvent(Event *)), _coreSession->eventManager(), SLOT(postEvent(Event *)));
 }
 
 void CtcpParser::displayMsg(NetworkEvent *event, Message::Type msgType, const QString &msg, const QString &sender,
@@ -49,7 +51,7 @@ void CtcpParser::displayMsg(NetworkEvent *event, Message::Type msgType, const QS
   MessageEvent *msgEvent = new MessageEvent(msgType, event->network(), msg, sender, target, msgFlags);
   msgEvent->setTimestamp(event->timestamp());
 
-  coreSession()->eventManager()->sendEvent(msgEvent);
+  emit newEvent(msgEvent);
 }
 
 QByteArray CtcpParser::lowLevelQuote(const QByteArray &message) {
@@ -177,7 +179,8 @@ void CtcpParser::parse(IrcEventRawMessage *e, Message::Type messagetype) {
 
     ctcpcmd = ctcpcmd.toUpper();
 
-    if(!coreSession()->ignoreListManager()->ctcpMatch(e->prefix(), e->network()->networkName(), ctcpcmd)) {
+    // we don't want to block /me messages by the CTCP ignore list
+    if(ctcpcmd == QLatin1String("ACTION") || !coreSession()->ignoreListManager()->ctcpMatch(e->prefix(), e->network()->networkName(), ctcpcmd)) {
       if(uuid.isNull())
         uuid = QUuid::createUuid();
 
@@ -192,7 +195,7 @@ void CtcpParser::parse(IrcEventRawMessage *e, Message::Type messagetype) {
                                           ctcptype, "INVALID", QString(), e->timestamp(), uuid);
     ctcpEvents << flushEvent;
     foreach(CtcpEvent *event, ctcpEvents) {
-      coreSession()->eventManager()->sendEvent(event);
+      emit newEvent(event);
     }
   }