summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2023-04-24 20:45:25 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2023-05-10 12:24:02 +0000
commitdab004b3c201f332ea38184bfec924cdfe800800 (patch)
tree9e28b5d736b625f7564c38a195954b852a6010ec /src/plugins/coreplugin
parent2d58d1b280959236968211f7811b040ae0d14daa (diff)
downloadqt-creator-dab004b3c201f332ea38184bfec924cdfe800800.tar.gz
ActionsFilter: Remove the old matchesFor() implementation
Change-Id: I9f2d4c3d070869a720b63089b689c22c06dd4f4e Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Diffstat (limited to 'src/plugins/coreplugin')
-rw-r--r--src/plugins/coreplugin/actionsfilter.cpp129
-rw-r--r--src/plugins/coreplugin/actionsfilter.h13
2 files changed, 6 insertions, 136 deletions
diff --git a/src/plugins/coreplugin/actionsfilter.cpp b/src/plugins/coreplugin/actionsfilter.cpp
index 7bb1d51d82..01772ac252 100644
--- a/src/plugins/coreplugin/actionsfilter.cpp
+++ b/src/plugins/coreplugin/actionsfilter.cpp
@@ -200,118 +200,6 @@ LocatorMatcherTasks ActionsFilter::matchers()
return {{AsyncTask<void>(onSetup), storage}};
}
-
-QList<LocatorFilterEntry> ActionsFilter::matchesFor(QFutureInterface<LocatorFilterEntry> &future,
- const QString &entry)
-{
- using Highlight = LocatorFilterEntry::HighlightInfo;
- if (entry.simplified().isEmpty())
- return m_entries;
-
- const QRegularExpression regExp = createRegExp(entry, Qt::CaseInsensitive, true);
-
- using FilterResult = std::pair<MatchLevel, LocatorFilterEntry>;
- const auto filter = [&](const LocatorFilterEntry &filterEntry) -> std::optional<FilterResult> {
- if (future.isCanceled())
- return {};
- Highlight highlight;
-
- const auto withHighlight = [&](LocatorFilterEntry result) {
- result.highlightInfo = highlight;
- return result;
- };
-
- Highlight::DataType first = Highlight::DisplayName;
- QString allText = filterEntry.displayName + ' ' + filterEntry.extraInfo;
- QRegularExpressionMatch allTextMatch = regExp.match(allText);
- if (!allTextMatch.hasMatch()) {
- first = Highlight::ExtraInfo;
- allText = filterEntry.extraInfo + ' ' + filterEntry.displayName;
- allTextMatch = regExp.match(allText);
- }
- if (allTextMatch.hasMatch()) {
- if (first == Highlight::DisplayName) {
- const QRegularExpressionMatch displayMatch = regExp.match(filterEntry.displayName);
- if (displayMatch.hasMatch())
- highlight = highlightInfo(displayMatch);
- const QRegularExpressionMatch extraMatch = regExp.match(filterEntry.extraInfo);
- if (extraMatch.hasMatch()) {
- Highlight extraHighlight = highlightInfo(extraMatch, Highlight::ExtraInfo);
- highlight.startsExtraInfo = extraHighlight.startsExtraInfo;
- highlight.lengthsExtraInfo = extraHighlight.lengthsExtraInfo;
- }
-
- if (filterEntry.displayName.startsWith(entry, Qt::CaseInsensitive))
- return FilterResult{MatchLevel::Best, withHighlight(filterEntry)};
- if (filterEntry.displayName.contains(entry, Qt::CaseInsensitive))
- return FilterResult{MatchLevel::Better, withHighlight(filterEntry)};
- if (displayMatch.hasMatch())
- return FilterResult{MatchLevel::Good, withHighlight(filterEntry)};
- if (extraMatch.hasMatch())
- return FilterResult{MatchLevel::Normal, withHighlight(filterEntry)};
- }
-
- const FuzzyMatcher::HighlightingPositions positions
- = FuzzyMatcher::highlightingPositions(allTextMatch);
- const int positionsCount = positions.starts.count();
- QTC_ASSERT(positionsCount == positions.lengths.count(), return {});
- const int border = first == Highlight::DisplayName ? filterEntry.displayName.length()
- : filterEntry.extraInfo.length();
- for (int i = 0; i < positionsCount; ++i) {
- int start = positions.starts.at(i);
- const int length = positions.lengths.at(i);
- Highlight::DataType type = first;
- if (start > border) {
- // this highlight is behind the border so switch type and reset start index
- start -= border + 1;
- type = first == Highlight::DisplayName ? Highlight::ExtraInfo
- : Highlight::DisplayName;
- } else if (start + length > border) {
- const int firstStart = start;
- const int firstLength = border - start;
- const int secondStart = 0;
- const int secondLength = length - firstLength - 1;
- if (first == Highlight::DisplayName) {
- highlight.startsDisplay.append(firstStart);
- highlight.lengthsDisplay.append(firstLength);
- highlight.startsExtraInfo.append(secondStart);
- highlight.lengthsExtraInfo.append(secondLength);
- } else {
- highlight.startsExtraInfo.append(firstStart);
- highlight.lengthsExtraInfo.append(firstLength);
- highlight.startsDisplay.append(secondStart);
- highlight.lengthsDisplay.append(secondLength);
- }
- continue;
- }
- if (type == Highlight::DisplayName) {
- highlight.startsDisplay.append(start);
- highlight.lengthsDisplay.append(length);
- } else {
- highlight.startsExtraInfo.append(start);
- highlight.lengthsExtraInfo.append(length);
- }
- }
-
- return FilterResult{MatchLevel::Normal, withHighlight(filterEntry)};
- }
- return {};
- };
-
- QMap<MatchLevel, QList<LocatorFilterEntry>> filtered;
- const QList<std::optional<FilterResult>> filterResults
- = QtConcurrent::blockingMapped(m_entries, filter);
- for (const std::optional<FilterResult> &filterResult : filterResults) {
- if (filterResult)
- filtered[filterResult->first] << filterResult->second;
- }
-
- QList<LocatorFilterEntry> result;
- for (const QList<LocatorFilterEntry> &sublist : std::as_const(filtered))
- result << sublist;
- return result;
-}
-
LocatorFilterEntry::Acceptor ActionsFilter::acceptor(const ActionFilterEntryData &data) const
{
static const int maxHistorySize = 30;
@@ -415,7 +303,7 @@ void ActionsFilter::collectEntriesForLastTriggered()
void ActionsFilter::updateEntry(const QPointer<QAction> action, const LocatorFilterEntry &entry)
{
- auto index = m_indexes.value(action, -1);
+ const int index = m_indexes.value(action, -1);
if (index < 0) {
m_indexes[action] = m_entries.size();
m_entries << entry;
@@ -459,18 +347,6 @@ void ActionsFilter::updateEnabledActionCache()
}
}
-void Core::Internal::ActionsFilter::prepareSearch(const QString &entry)
-{
- Q_UNUSED(entry)
- m_entries.clear();
- m_indexes.clear();
- QList<const QMenu *> processedMenus;
- collectEntriesForLastTriggered();
- for (QAction* action : menuBarActions())
- collectEntriesForAction(action, QStringList(), processedMenus);
- collectEntriesForCommands();
-}
-
void ActionsFilter::saveState(QJsonObject &object) const
{
QJsonArray commands;
@@ -484,7 +360,8 @@ void ActionsFilter::saveState(QJsonObject &object) const
void ActionsFilter::restoreState(const QJsonObject &object)
{
m_lastTriggered.clear();
- for (const QJsonValue &command : object.value(lastTriggeredC).toArray()) {
+ const QJsonArray commands = object.value(lastTriggeredC).toArray();
+ for (const QJsonValue &command : commands) {
if (command.isString())
m_lastTriggered.append({nullptr, Id::fromString(command.toString())});
}
diff --git a/src/plugins/coreplugin/actionsfilter.h b/src/plugins/coreplugin/actionsfilter.h
index 3d5cf43814..692dea95d2 100644
--- a/src/plugins/coreplugin/actionsfilter.h
+++ b/src/plugins/coreplugin/actionsfilter.h
@@ -14,8 +14,7 @@ class QAction;
class QMenu;
QT_END_NAMESPACE
-namespace Core {
-namespace Internal {
+namespace Core::Internal {
class ActionFilterEntryData
{
@@ -30,14 +29,9 @@ public:
class ActionsFilter : public ILocatorFilter
{
- Q_OBJECT
public:
ActionsFilter();
- QList<LocatorFilterEntry> matchesFor(QFutureInterface<LocatorFilterEntry> &future,
- const QString &entry) override;
- void prepareSearch(const QString &entry) override;
-
private:
LocatorMatcherTasks matchers() final;
void saveState(QJsonObject &object) const override;
@@ -51,11 +45,10 @@ private:
void updateEntry(const QPointer<QAction> action, const LocatorFilterEntry &entry);
void updateEnabledActionCache();
- QList<LocatorFilterEntry> m_entries;
+ LocatorFilterEntries m_entries;
QMap<QPointer<QAction>, int> m_indexes;
QSet<QPointer<QAction>> m_enabledActions;
mutable QList<ActionFilterEntryData> m_lastTriggered;
};
-} // namespace Internal
-} // namespace Core
+} // namespace Core::Internal