fixes #484 - issues with ssl status indicator
[quassel.git] / src / qtui / qtuimessageprocessor.cpp
index 095b3e6..9bc1c8c 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
-*   Copyright (C) 2005-08 by the Quassel Project                          *
+*   Copyright (C) 2005-09 by the Quassel Project                          *
 *   devel@quassel-irc.org                                                 *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
@@ -138,7 +138,7 @@ void QtUiMessageProcessor::checkForHighlight(Message &msg) {
         nickList = myIdentity->nicks();
     }
     foreach(QString nickname, nickList) {
-      QRegExp nickRegExp("\\b" + QRegExp::escape(nickname) + "\\b",
+      QRegExp nickRegExp("\\b" + QRegExp::escape(nickname) + "(\\W|\\b|$)", // + "\\b", this does not seem to work for trailing ` -> upstream bug?
                           _nicksCaseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive);
       if(nickRegExp.indexIn(msg.contents()) >= 0) {
         msg.setFlags(msg.flags() | Message::Highlight);
@@ -151,13 +151,15 @@ void QtUiMessageProcessor::checkForHighlight(Message &msg) {
       if(!rule.isEnabled)
        continue;
 
-      QRegExp userRegExp;
+      bool match = false;
       if(rule.isRegExp) {
-        userRegExp = QRegExp(rule.name, rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
+        QRegExp rx(rule.name, rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
+        match = rx.exactMatch(msg.contents());
       } else {
-        userRegExp = QRegExp("\\b" + QRegExp::escape(rule.name) + "\\b", rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
+        QRegExp rx("\\b" + QRegExp::escape(rule.name) + "\\b", rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
+        match = (rx.indexIn(msg.contents()) >= 0);
       }
-      if(userRegExp.exactMatch(msg.contents())) {
+      if(match) {
         msg.setFlags(msg.flags() | Message::Highlight);
         return;
       }