forked from qt-creator/qt-creator
BaseFileFilter: Make searching in paths easier
Allow searching for TextEditor/main.cpp by typing either "text*main" or simply "text main". Fixes: QTCREATORBUG-22546 Change-Id: Ica6fbd67c98381a8b2d13801e93ef7dba7f367a4 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
committed by
André Hartmann
parent
e9272d848b
commit
370511b5e4
@@ -111,7 +111,8 @@ static int matchLevelFor(const QRegularExpressionMatch &match, const QString &ma
|
||||
QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFilterEntry> &future, const QString &origEntry)
|
||||
{
|
||||
QList<LocatorFilterEntry> entries[4];
|
||||
const QString entry = QDir::fromNativeSeparators(origEntry);
|
||||
// If search string contains spaces, treat them as wildcard '*' and search in full path
|
||||
const QString entry = QDir::fromNativeSeparators(origEntry).replace(' ', '*');
|
||||
const EditorManager::FilePathInfo fp = EditorManager::splitLineAndColumnNumber(entry);
|
||||
|
||||
const QRegularExpression regexp = createRegExp(fp.filePath);
|
||||
@@ -119,12 +120,15 @@ QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFil
|
||||
d->m_current.clear(); // free memory
|
||||
return entries[0];
|
||||
}
|
||||
const QChar pathSeparator('/');
|
||||
const bool hasPathSeparator = fp.filePath.contains(pathSeparator);
|
||||
auto containsPathSeparator = [](const QString &candidate) {
|
||||
return candidate.contains('/') || candidate.contains('*');
|
||||
};
|
||||
|
||||
const bool hasPathSeparator = containsPathSeparator(fp.filePath);
|
||||
const bool containsPreviousEntry = !d->m_current.previousEntry.isEmpty()
|
||||
&& fp.filePath.contains(d->m_current.previousEntry);
|
||||
const bool pathSeparatorAdded = !d->m_current.previousEntry.contains(pathSeparator)
|
||||
&& fp.filePath.contains(pathSeparator);
|
||||
const bool pathSeparatorAdded = !containsPathSeparator(d->m_current.previousEntry)
|
||||
&& hasPathSeparator;
|
||||
const bool searchInPreviousResults = !d->m_current.forceNewSearchList && containsPreviousEntry
|
||||
&& !pathSeparatorAdded;
|
||||
if (searchInPreviousResults)
|
||||
|
Reference in New Issue
Block a user