diff options
| author | 2012-04-07 10:46:15 +0000 | |
|---|---|---|
| committer | 2012-04-07 10:46:15 +0000 | |
| commit | 3806146c262729fbbf3e8bc38724c96dc53be458 (patch) | |
| tree | a835765b50806d7f4a1feca54d7ddcca08e324af /src/kvilib/core/KviQString.cpp | |
| parent | revamped INSTALL-MacOs.txt (diff) | |
| download | KVIrc-3806146c262729fbbf3e8bc38724c96dc53be458.tar.gz KVIrc-3806146c262729fbbf3e8bc38724c96dc53be458.tar.bz2 KVIrc-3806146c262729fbbf3e8bc38724c96dc53be458.zip | |
fix #1264
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@6126 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/kvilib/core/KviQString.cpp')
| -rw-r--r-- | src/kvilib/core/KviQString.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/kvilib/core/KviQString.cpp b/src/kvilib/core/KviQString.cpp index 30557ca09..a532b2a96 100644 --- a/src/kvilib/core/KviQString.cpp +++ b/src/kvilib/core/KviQString.cpp @@ -1047,7 +1047,35 @@ namespace KviQString bool matchString(const QString & szExp, const QString & szStr, bool bIsRegExp, bool bExact, bool bCs) { - QRegExp re(szExp,bCs ? Qt::CaseSensitive : Qt::CaseInsensitive,bIsRegExp ? QRegExp::RegExp : QRegExp::Wildcard); + QString szWildcard; + + if(!bIsRegExp) + { + // In wildcard maching mode, QRegExp not only interprets * and ?, but also [ ] + // This workaround embeds square brackes in square brackets (ticket #1264) + + QChar * pPtr = (QChar*)szExp.constData(); + + if(!pPtr) + return 0; + + while(pPtr->unicode()) + { + if((pPtr->unicode() == '[') || (pPtr->unicode() == ']')) + { + szWildcard.append("["); + szWildcard.append(*pPtr); + szWildcard.append("]"); + } else { + szWildcard.append(*pPtr); + } + pPtr++; + } + } else { + szWildcard = szExp; + } + + QRegExp re(szWildcard,bCs ? Qt::CaseSensitive : Qt::CaseInsensitive,bIsRegExp ? QRegExp::RegExp : QRegExp::Wildcard); if(bExact) return re.exactMatch(szStr); |
