diff options
author | Serhii Moroz <frost.asm@gmail.com> | 2016-08-02 12:04:40 +0300 |
---|---|---|
committer | Serhii Moroz <frost.asm@gmail.com> | 2017-03-21 12:31:46 +0000 |
commit | 6ecb1c401851dd1f4e5582ad491a6871710abeb7 (patch) | |
tree | 65955a01fbdae419b33d65c901fb9a93d0df7382 /src/plugins/macros | |
parent | 4f66adb9a29593b660db6590c0547780456ac757 (diff) | |
download | qt-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.cpp | 34 |
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*> ¯os = 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); |