diff --git a/src/plugins/coreplugin/CMakeLists.txt b/src/plugins/coreplugin/CMakeLists.txt index 965eacd19f7..45fa653210e 100644 --- a/src/plugins/coreplugin/CMakeLists.txt +++ b/src/plugins/coreplugin/CMakeLists.txt @@ -111,6 +111,7 @@ add_qtc_plugin(Core locator/locatorsettingspage.cpp locator/locatorsettingspage.h locator/locatorsettingspage.ui locator/locatorwidget.cpp locator/locatorwidget.h locator/opendocumentsfilter.cpp locator/opendocumentsfilter.h + locator/spotlightlocatorfilter.h locator/spotlightlocatorfilter.cpp locator/urllocatorfilter.cpp locator/urllocatorfilter.h locator/urllocatorfilter.ui mainwindow.cpp mainwindow.h manhattanstyle.cpp manhattanstyle.h @@ -180,12 +181,6 @@ extend_qtc_plugin(Core progressmanager/progressmanager_mac.mm ) -extend_qtc_plugin(Core - CONDITION NOT WIN32 - SOURCES - locator/spotlightlocatorfilter.h locator/spotlightlocatorfilter.cpp -) - extend_qtc_plugin(Core CONDITION (NOT WIN32) AND (NOT APPLE) SOURCES progressmanager/progressmanager_x11.cpp diff --git a/src/plugins/coreplugin/locator/locator.cpp b/src/plugins/coreplugin/locator/locator.cpp index f753c3fc55b..53862f117e1 100644 --- a/src/plugins/coreplugin/locator/locator.cpp +++ b/src/plugins/coreplugin/locator/locator.cpp @@ -36,6 +36,7 @@ #include "locatorsettingspage.h" #include "locatorwidget.h" #include "opendocumentsfilter.h" +#include "spotlightlocatorfilter.h" #include "urllocatorfilter.h" #include @@ -59,10 +60,6 @@ #include #include -#ifdef Q_OS_UNIX -#include "spotlightlocatorfilter.h" -#endif - using namespace Utils; namespace Core { @@ -90,9 +87,7 @@ public: MenuBarFilter m_menubarFilter; UrlLocatorFilter m_urlFilter{UrlLocatorFilter::tr("Web Search"), "RemoteHelpFilter"}; UrlLocatorFilter m_bugFilter{UrlLocatorFilter::tr("Qt Project Bugs"), "QtProjectBugs"}; -#ifdef Q_OS_UNIX SpotlightLocatorFilter m_spotlightLocatorFilter; -#endif }; LocatorData::LocatorData() diff --git a/src/plugins/coreplugin/locator/spotlightlocatorfilter.cpp b/src/plugins/coreplugin/locator/spotlightlocatorfilter.cpp index 11b8322dce6..f0295126e25 100644 --- a/src/plugins/coreplugin/locator/spotlightlocatorfilter.cpp +++ b/src/plugins/coreplugin/locator/spotlightlocatorfilter.cpp @@ -94,9 +94,11 @@ SpotlightIterator::SpotlightIterator(const QStringList &command) scheduleKillProcess(); }); QObject::connect(m_process.get(), &QProcess::readyReadStandardOutput, [this] { - const QStringList items = QString::fromUtf8(m_process->readAllStandardOutput()).split('\n'); + QString output = QString::fromUtf8(m_process->readAllStandardOutput()); + output.replace("\r\n", "\n"); + const QStringList items = output.split('\n'); QMutexLocker lock(&m_mutex); - m_queue.append(Utils::transform(items, &FilePath::fromString)); + m_queue.append(Utils::transform(items, &FilePath::fromUserInput)); if (m_filePaths.size() + m_queue.size() > 10000) // limit the amount of data scheduleKillProcess(); m_waitForItems.wakeAll(); @@ -180,7 +182,7 @@ SpotlightLocatorFilter::SpotlightLocatorFilter() QString("kMDItemFSName = '*%1*'%2") .arg(quoted, sensitivity == Qt::CaseInsensitive ? QString("c") : QString())}); }; - } else { + } else if (HostOsInfo::isLinuxHost()) { command = [](const QString &query, Qt::CaseSensitivity sensitivity) { QString regex = query; regex = regex.replace('*', ".*"); @@ -188,6 +190,14 @@ SpotlightLocatorFilter::SpotlightLocatorFilter() + (sensitivity == Qt::CaseInsensitive ? QStringList({"-i"}) : QStringList()) + QStringList({"-l", "10000", "-r", regex}); }; + } else if (HostOsInfo::isWindowsHost()) { + command = [](const QString &query, Qt::CaseSensitivity sensitivity) { + QString regex = query; + regex = regex.replace('*', ".*"); + return QStringList({"es.exe"}) + + (sensitivity == Qt::CaseSensitive ? QStringList({"-i"}) : QStringList()) + + QStringList({"-n", "10000", "-r", regex}); + }; } setId("SpotlightFileNamesLocatorFilter"); setDisplayName(tr("File Name Index"));