BaseFileFilter: Sort entries by display name instead path

Before, each category was sort by full path name which is
displayed in locators second column.

Change-Id: Id3f5e931b179008d832479be0cf1f9bc26b1e94d
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Andre Hartmann
2018-11-25 15:59:32 +01:00
committed by André Hartmann
parent 952258a8f0
commit 187c5a5f4d
2 changed files with 25 additions and 0 deletions

View File

@@ -26,6 +26,7 @@
#include "basefilefilter.h"
#include <coreplugin/editormanager/editormanager.h>
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/qtcassert.h>
@@ -178,6 +179,12 @@ QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFil
d->m_current.iterator.clear();
QTimer::singleShot(0, this, &BaseFileFilter::updatePreviousResultData);
}
for (auto &entry : entries) {
if (entry.size() < 1000)
Utils::sort(entry, Core::LocatorFilterEntry::compareLexigraphically);
}
return entries[0] + entries[1] + entries[2] + entries[3];
}

View File

@@ -179,4 +179,22 @@ void Core::Internal::CorePlugin::test_basefilefilter_data()
<< ResultData("qcore_mac_p.h", priorityTestFilesShort.at(2))
<< ResultData("mid_qcore_mac_p.h", priorityTestFilesShort.at(1))))
);
const QStringList sortingTestFiles({QDir::fromNativeSeparators(testDir.file("aaa/zfile.cpp")),
QDir::fromNativeSeparators(testDir.file("bbb/yfile.cpp")),
QDir::fromNativeSeparators(testDir.file("ccc/xfile.cpp"))});
QStringList sortingTestFilesShort;
for (const QString &file : sortingTestFiles)
sortingTestFilesShort << Utils::FileUtils::shortNativePath(Utils::FileName::fromString(file));
QTest::newRow("BaseFileFilter-SortByDisplayName")
<< sortingTestFiles
<< (QList<ReferenceData>()
<< ReferenceData(
"file",
(QList<ResultData>()
<< ResultData("xfile.cpp", sortingTestFilesShort.at(2))
<< ResultData("yfile.cpp", sortingTestFilesShort.at(1))
<< ResultData("zfile.cpp", sortingTestFilesShort.at(0))))
);
}