diff --git a/menufile.cpp b/menufile.cpp --- a/menufile.cpp +++ b/menufile.cpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include @@ -454,8 +454,9 @@ result.chop(1); } - QRegExp r(QStringLiteral("(.*)(?=-\\d+)")); - result = (r.indexIn(result) > -1) ? r.cap(1) : result; + static const QRegularExpression re(QStringLiteral("(.*)(?=-\\d+)")); + const QRegularExpressionMatch match = re.match(result); + result = match.hasMatch() ? match.captured(1) : result; int trunc = result.length(); // Position of trailing '/' diff --git a/menuinfo.cpp b/menuinfo.cpp --- a/menuinfo.cpp +++ b/menuinfo.cpp @@ -19,7 +19,7 @@ #include "menuinfo.h" -#include +#include #include @@ -106,11 +106,17 @@ entries.removeAll(entry); } +QString uniqueCaption(const QString &caption) +{ + static const QRegularExpression re(QStringLiteral("(.*)(?=-\\d+)")); + const QRegularExpressionMatch match = re.match(caption); + return match.hasMatch() ? match.captured(1) : caption; +} + // Return a unique sub-menu caption inspired by @p caption QString MenuFolderInfo::uniqueMenuCaption(const QString &caption) { - QRegExp r(QStringLiteral("(.*)(?=-\\d+)")); - QString cap = (r.indexIn(caption) > -1) ? r.cap(1) : caption; + QString cap = uniqueCaption(caption); QString result = caption; @@ -134,8 +140,7 @@ // Return a unique item caption inspired by @p caption QString MenuFolderInfo::uniqueItemCaption(const QString &caption, const QString &exclude) { - QRegExp r(QStringLiteral("(.*)(?=-\\d+)")); - QString cap = (r.indexIn(caption) > -1) ? r.cap(1) : caption; + QString cap = uniqueCaption(caption); QString result = caption; diff --git a/treeview.cpp b/treeview.cpp --- a/treeview.cpp +++ b/treeview.cpp @@ -36,7 +36,7 @@ #include #include #include -#include +#include #include #include @@ -727,8 +727,9 @@ QString base = file.mid(file.lastIndexOf(QLatin1Char('/'))+1); base = base.left(base.lastIndexOf(QLatin1Char('.'))); - QRegExp r(QStringLiteral("(.*)(?=-\\d+)")); - base = (r.indexIn(base) > -1) ? r.cap(1) : base; + const QRegularExpression re(QStringLiteral("(.*)(?=-\\d+)")); + const QRegularExpressionMatch match = re.match(base); + base = match.hasMatch() ? match.captured(1) : base; QString result = KService::newServicePath(true, base, menuId, excludeList); excludeList->append(*menuId);