summaryrefslogtreecommitdiff
path: root/src/plugins/macros
diff options
context:
space:
mode:
authorSerhii Moroz <frost.asm@gmail.com>2016-08-02 12:04:40 +0300
committerSerhii Moroz <frost.asm@gmail.com>2017-03-21 12:31:46 +0000
commit6ecb1c401851dd1f4e5582ad491a6871710abeb7 (patch)
tree65955a01fbdae419b33d65c901fb9a93d0df7382 /src/plugins/macros
parent4f66adb9a29593b660db6590c0547780456ac757 (diff)
downloadqt-creator-6ecb1c401851dd1f4e5582ad491a6871710abeb7.tar.gz
Locator: Add highlighting of the search text
Change-Id: Ia166e9667076e46770a754b626ceb28080139e79 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/macros')
-rw-r--r--src/plugins/macros/macrolocatorfilter.cpp34
1 files changed, 20 insertions, 14 deletions
diff --git a/src/plugins/macros/macrolocatorfilter.cpp b/src/plugins/macros/macrolocatorfilter.cpp
index 7f210f4178..a631eafd54 100644
--- a/src/plugins/macros/macrolocatorfilter.cpp
+++ b/src/plugins/macros/macrolocatorfilter.cpp
@@ -54,26 +54,32 @@ QList<Core::LocatorFilterEntry> MacroLocatorFilter::matchesFor(QFutureInterface<
QList<Core::LocatorFilterEntry> goodEntries;
QList<Core::LocatorFilterEntry> betterEntries;
- const Qt::CaseSensitivity caseSensitivity_ = caseSensitivity(entry);
+ const Qt::CaseSensitivity entryCaseSensitivity = caseSensitivity(entry);
const QMap<QString, Macro*> &macros = MacroManager::macros();
QMapIterator<QString, Macro*> it(macros);
while (it.hasNext()) {
it.next();
- QString name = it.key();
-
- QList<Core::LocatorFilterEntry> *category = 0;
- if (name.startsWith(entry, caseSensitivity_))
- category = &betterEntries;
- else if (name.contains(entry, caseSensitivity_))
- category = &goodEntries;
-
- if (category) {
- QVariant id;
- Core::LocatorFilterEntry entry(this, it.key(), id, m_icon);
- entry.extraInfo = it.value()->description();
- category->append(entry);
+ const QString displayName = it.key();
+ const QString description = it.value()->description();
+
+ int index = displayName.indexOf(entry, 0, entryCaseSensitivity);
+ Core::LocatorFilterEntry::HighlightInfo::DataType hDataType = Core::LocatorFilterEntry::HighlightInfo::DisplayName;
+ if (index < 0) {
+ index = description.indexOf(entry, 0, entryCaseSensitivity);
+ hDataType = Core::LocatorFilterEntry::HighlightInfo::ExtraInfo;
+ }
+
+ if (index >= 0) {
+ Core::LocatorFilterEntry filterEntry(this, displayName, QVariant(), m_icon);
+ filterEntry.extraInfo = description;
+ filterEntry.highlightInfo = Core::LocatorFilterEntry::HighlightInfo(index, entry.length(), hDataType);
+
+ if (index == 0)
+ betterEntries.append(filterEntry);
+ else
+ goodEntries.append(filterEntry);
}
}
betterEntries.append(goodEntries);