forked from qt-creator/qt-creator
BaseFileFind: Centralize waiting for search to finish
Instead of adding a FutureSynchronizer to all backends, we can use a
central one in BaseFileFind.
Amends 269f15df6b
Change-Id: Iad0145317b53a95b686c091017b8197d759dc253
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -235,7 +235,6 @@ static bool isGitDirectory(const QString &path)
|
|||||||
GitGrep::GitGrep(GitClient *client)
|
GitGrep::GitGrep(GitClient *client)
|
||||||
: m_client(client)
|
: m_client(client)
|
||||||
{
|
{
|
||||||
m_futureSynchronizer.setCancelOnWait(true);
|
|
||||||
m_widget = new QWidget;
|
m_widget = new QWidget;
|
||||||
auto layout = new QHBoxLayout(m_widget);
|
auto layout = new QHBoxLayout(m_widget);
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
@@ -305,9 +304,7 @@ void GitGrep::writeSettings(QSettings *settings) const
|
|||||||
QFuture<FileSearchResultList> GitGrep::executeSearch(const TextEditor::FileFindParameters ¶meters,
|
QFuture<FileSearchResultList> GitGrep::executeSearch(const TextEditor::FileFindParameters ¶meters,
|
||||||
TextEditor::BaseFileFind * /*baseFileFind*/)
|
TextEditor::BaseFileFind * /*baseFileFind*/)
|
||||||
{
|
{
|
||||||
auto future = Utils::runAsync(GitGrepRunner(parameters));
|
return Utils::runAsync(GitGrepRunner(parameters));
|
||||||
m_futureSynchronizer.addFuture(future);
|
|
||||||
return future;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IEditor *GitGrep::openEditor(const SearchResultItem &item,
|
IEditor *GitGrep::openEditor(const SearchResultItem &item,
|
||||||
|
@@ -26,7 +26,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <texteditor/basefilefind.h>
|
#include <texteditor/basefilefind.h>
|
||||||
#include <utils/futuresynchronizer.h>
|
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
@@ -63,7 +62,6 @@ private:
|
|||||||
QWidget *m_widget;
|
QWidget *m_widget;
|
||||||
Utils::FancyLineEdit *m_treeLineEdit;
|
Utils::FancyLineEdit *m_treeLineEdit;
|
||||||
QCheckBox *m_recurseSubmodules = nullptr;
|
QCheckBox *m_recurseSubmodules = nullptr;
|
||||||
Utils::FutureSynchronizer m_futureSynchronizer;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -163,7 +163,6 @@ FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
|
|||||||
, m_path("ag")
|
, m_path("ag")
|
||||||
, m_toolName("SilverSearcher")
|
, m_toolName("SilverSearcher")
|
||||||
{
|
{
|
||||||
m_futureSynchronizer.setCancelOnWait(true);
|
|
||||||
m_widget = new QWidget;
|
m_widget = new QWidget;
|
||||||
auto layout = new QHBoxLayout(m_widget);
|
auto layout = new QHBoxLayout(m_widget);
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
@@ -183,6 +182,10 @@ FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FindInFilesSilverSearcher::~FindInFilesSilverSearcher()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
QVariant FindInFilesSilverSearcher::parameters() const
|
QVariant FindInFilesSilverSearcher::parameters() const
|
||||||
{
|
{
|
||||||
SilverSearcherSearchOptions silverSearcherSearchOptions;
|
SilverSearcherSearchOptions silverSearcherSearchOptions;
|
||||||
@@ -213,9 +216,7 @@ void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const
|
|||||||
QFuture<FileSearchResultList> FindInFilesSilverSearcher::executeSearch(
|
QFuture<FileSearchResultList> FindInFilesSilverSearcher::executeSearch(
|
||||||
const FileFindParameters ¶meters, BaseFileFind * /*baseFileFind*/)
|
const FileFindParameters ¶meters, BaseFileFind * /*baseFileFind*/)
|
||||||
{
|
{
|
||||||
auto future = Utils::runAsync(runSilverSeacher, parameters);
|
return Utils::runAsync(runSilverSeacher, parameters);
|
||||||
m_futureSynchronizer.addFuture(future);
|
|
||||||
return future;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/,
|
IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/,
|
||||||
|
@@ -27,7 +27,6 @@
|
|||||||
|
|
||||||
#include <coreplugin/find/ifindsupport.h>
|
#include <coreplugin/find/ifindsupport.h>
|
||||||
#include <texteditor/basefilefind.h>
|
#include <texteditor/basefilefind.h>
|
||||||
#include <utils/futuresynchronizer.h>
|
|
||||||
|
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
|
|
||||||
@@ -45,6 +44,7 @@ class FindInFilesSilverSearcher : public TextEditor::SearchEngine
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FindInFilesSilverSearcher(QObject *parent);
|
explicit FindInFilesSilverSearcher(QObject *parent);
|
||||||
|
~FindInFilesSilverSearcher() override;
|
||||||
|
|
||||||
// TextEditor::FileFindExtension
|
// TextEditor::FileFindExtension
|
||||||
QString title() const override;
|
QString title() const override;
|
||||||
@@ -66,7 +66,6 @@ private:
|
|||||||
QPointer<QLineEdit> m_searchOptionsLineEdit;
|
QPointer<QLineEdit> m_searchOptionsLineEdit;
|
||||||
QString m_path;
|
QString m_path;
|
||||||
QString m_toolName;
|
QString m_toolName;
|
||||||
Utils::FutureSynchronizer m_futureSynchronizer;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace SilverSearcher
|
} // namespace SilverSearcher
|
||||||
|
@@ -27,18 +27,19 @@
|
|||||||
#include "textdocument.h"
|
#include "textdocument.h"
|
||||||
|
|
||||||
#include <aggregation/aggregate.h>
|
#include <aggregation/aggregate.h>
|
||||||
#include <coreplugin/icore.h>
|
|
||||||
#include <coreplugin/progressmanager/progressmanager.h>
|
|
||||||
#include <coreplugin/progressmanager/futureprogress.h>
|
|
||||||
#include <coreplugin/dialogs/readonlyfilesdialog.h>
|
#include <coreplugin/dialogs/readonlyfilesdialog.h>
|
||||||
#include <coreplugin/documentmanager.h>
|
#include <coreplugin/documentmanager.h>
|
||||||
#include <coreplugin/editormanager/editormanager.h>
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
#include <coreplugin/find/ifindsupport.h>
|
#include <coreplugin/find/ifindsupport.h>
|
||||||
#include <texteditor/texteditor.h>
|
#include <coreplugin/icore.h>
|
||||||
|
#include <coreplugin/progressmanager/futureprogress.h>
|
||||||
|
#include <coreplugin/progressmanager/progressmanager.h>
|
||||||
#include <texteditor/refactoringchanges.h>
|
#include <texteditor/refactoringchanges.h>
|
||||||
|
#include <texteditor/texteditor.h>
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
#include <utils/fadingindicator.h>
|
#include <utils/fadingindicator.h>
|
||||||
#include <utils/filesearch.h>
|
#include <utils/filesearch.h>
|
||||||
|
#include <utils/futuresynchronizer.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
#include <utils/stylehelper.h>
|
#include <utils/stylehelper.h>
|
||||||
|
|
||||||
@@ -111,8 +112,11 @@ public:
|
|||||||
class BaseFileFindPrivate
|
class BaseFileFindPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
BaseFileFindPrivate() { m_futureSynchronizer.setCancelOnWait(true); }
|
||||||
|
|
||||||
QPointer<IFindSupport> m_currentFindSupport;
|
QPointer<IFindSupport> m_currentFindSupport;
|
||||||
|
|
||||||
|
Utils::FutureSynchronizer m_futureSynchronizer;
|
||||||
QLabel *m_resultLabel = nullptr;
|
QLabel *m_resultLabel = nullptr;
|
||||||
// models in native path format
|
// models in native path format
|
||||||
QStringListModel m_filterStrings;
|
QStringListModel m_filterStrings;
|
||||||
@@ -308,8 +312,10 @@ void BaseFileFind::runSearch(SearchResult *search)
|
|||||||
connect(watcher, &QFutureWatcherBase::finished, search, [watcher, search]() {
|
connect(watcher, &QFutureWatcherBase::finished, search, [watcher, search]() {
|
||||||
search->finishSearch(watcher->isCanceled());
|
search->finishSearch(watcher->isCanceled());
|
||||||
});
|
});
|
||||||
watcher->setFuture(executeSearch(parameters));
|
QFuture<FileSearchResultList> future = executeSearch(parameters);
|
||||||
FutureProgress *progress = ProgressManager::addTask(QFuture<void>(watcher->future()),
|
watcher->setFuture(future);
|
||||||
|
d->m_futureSynchronizer.addFuture(future);
|
||||||
|
FutureProgress *progress = ProgressManager::addTask(QFuture<void>(future),
|
||||||
tr("Searching"),
|
tr("Searching"),
|
||||||
Constants::TASK_SEARCH);
|
Constants::TASK_SEARCH);
|
||||||
connect(search, &SearchResult::countChanged, progress, [progress](int c) {
|
connect(search, &SearchResult::countChanged, progress, [progress](int c) {
|
||||||
|
Reference in New Issue
Block a user