diff --git a/src/core/kcoredirlister.cpp b/src/core/kcoredirlister.cpp --- a/src/core/kcoredirlister.cpp +++ b/src/core/kcoredirlister.cpp @@ -30,7 +30,7 @@ #include "kiocoredebug.h" #include "../pathhelpers_p.h" -#include +#include #include #include #include @@ -2302,7 +2302,9 @@ // Split on white space const QStringList list = nameFilter.split(QLatin1Char(' '), QString::SkipEmptyParts); for (const QString &filter : list) { - d->settings.lstFilters.append(QRegExp(filter, Qt::CaseInsensitive, QRegExp::Wildcard)); + d->settings.lstFilters.append(QRegularExpression( + QRegularExpression::anchoredPattern(QRegularExpression::wildcardToRegularExpression(filter)), + QRegularExpression::CaseInsensitiveOption)); } } @@ -2349,7 +2351,13 @@ bool KCoreDirLister::matchesFilter(const QString &name) const { - return doNameFilter(name, d->settings.lstFilters); + for (const QRegularExpression &filter : d->settings.lstFilters) { + if (filter.match(name).hasMatch()) { + return true; + } + } + + return false; } bool KCoreDirLister::matchesMimeFilter(const QString &mime) const diff --git a/src/core/kcoredirlister_p.h b/src/core/kcoredirlister_p.h --- a/src/core/kcoredirlister_p.h +++ b/src/core/kcoredirlister_p.h @@ -34,6 +34,7 @@ #include #include +class QRegularExpression; class KCoreDirLister; namespace KIO { @@ -144,7 +145,7 @@ FilterSettings() : isShowingDotFiles(false), dirOnlyMode(false) {} bool isShowingDotFiles; bool dirOnlyMode; - QList lstFilters; + QVector lstFilters; QStringList mimeFilter; QStringList mimeExcludeFilter; };