X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fqtuimessageprocessor.cpp;h=a80dcd29d77ce129c8e25cea4b44caed4bf52b85;hp=2466e15d7992d0e17dbaf8461adaf1ff954cd584;hb=46984aca05b2d5f8dddd0c8739e60a1753078123;hpb=7e20c659f88e26ccdfdc65f4894ed6ecf61ca8a9 diff --git a/src/qtui/qtuimessageprocessor.cpp b/src/qtui/qtuimessageprocessor.cpp index 2466e15d..a80dcd29 100644 --- a/src/qtui/qtuimessageprocessor.cpp +++ b/src/qtui/qtuimessageprocessor.cpp @@ -115,10 +115,11 @@ void QtUiMessageProcessor::checkForHighlight(Message &msg) { const Identity *myIdentity = Client::identity(net->identity()); if(myIdentity) nickList = myIdentity->nicks(); + if(!nickList.contains(net->myNick())) + nickList.prepend(net->myNick()); } foreach(QString nickname, nickList) { - QRegExp nickRegExp("\\b" + QRegExp::escape(nickname) + "(\\W|\\b|$)", // + "\\b", this does not seem to work for trailing ` -> upstream bug? - _nicksCaseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive); + QRegExp nickRegExp("(^|\\W)" + QRegExp::escape(nickname) + "(\\W|$)", _nicksCaseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive); if(nickRegExp.indexIn(msg.contents()) >= 0) { msg.setFlags(msg.flags() | Message::Highlight); return; @@ -130,14 +131,13 @@ void QtUiMessageProcessor::checkForHighlight(Message &msg) { if(!rule.isEnabled) continue; - bool match = false; + QRegExp rx; if(rule.isRegExp) { - QRegExp rx(rule.name, rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive); - match = rx.exactMatch(msg.contents()); + rx = QRegExp(rule.name, rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive); } else { - QRegExp rx("\\b" + QRegExp::escape(rule.name) + "\\b", rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive); - match = (rx.indexIn(msg.contents()) >= 0); + rx = QRegExp("(^|\\W)" + QRegExp::escape(rule.name) + "(\\W|$)", rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive); } + bool match = (rx.indexIn(msg.contents()) >= 0); if(match) { msg.setFlags(msg.flags() | Message::Highlight); return;