Wait for all searches to be finished in d'tors

Task-number: QTCREATORBUG-25792
Change-Id: Idc516324b2a80b9b907cf29ed3df4de86d842266
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Jarek Kobus
2021-05-28 09:43:48 +02:00
parent 4b19decaa7
commit 269f15df6b
4 changed files with 12 additions and 7 deletions

View File

@@ -238,6 +238,7 @@ 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);
@@ -307,7 +308,9 @@ void GitGrep::writeSettings(QSettings *settings) const
QFuture<FileSearchResultList> GitGrep::executeSearch(const TextEditor::FileFindParameters &parameters, QFuture<FileSearchResultList> GitGrep::executeSearch(const TextEditor::FileFindParameters &parameters,
TextEditor::BaseFileFind * /*baseFileFind*/) TextEditor::BaseFileFind * /*baseFileFind*/)
{ {
return Utils::runAsync(GitGrepRunner::run, parameters); auto future = Utils::runAsync(GitGrepRunner::run, parameters);
m_futureSynchronizer.addFuture(future);
return future;
} }
IEditor *GitGrep::openEditor(const SearchResultItem &item, IEditor *GitGrep::openEditor(const SearchResultItem &item,

View File

@@ -26,6 +26,7 @@
#pragma once #pragma once
#include <texteditor/basefilefind.h> #include <texteditor/basefilefind.h>
#include <utils/futuresynchronizer.h>
#include <QCoreApplication> #include <QCoreApplication>
@@ -62,6 +63,7 @@ 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

View File

@@ -163,6 +163,7 @@ 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);
@@ -182,10 +183,6 @@ FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent)
} }
} }
FindInFilesSilverSearcher::~FindInFilesSilverSearcher()
{
}
QVariant FindInFilesSilverSearcher::parameters() const QVariant FindInFilesSilverSearcher::parameters() const
{ {
SilverSearcherSearchOptions silverSearcherSearchOptions; SilverSearcherSearchOptions silverSearcherSearchOptions;
@@ -216,7 +213,9 @@ void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const
QFuture<FileSearchResultList> FindInFilesSilverSearcher::executeSearch( QFuture<FileSearchResultList> FindInFilesSilverSearcher::executeSearch(
const FileFindParameters &parameters, BaseFileFind * /*baseFileFind*/) const FileFindParameters &parameters, BaseFileFind * /*baseFileFind*/)
{ {
return Utils::runAsync(runSilverSeacher, parameters); auto future = Utils::runAsync(runSilverSeacher, parameters);
m_futureSynchronizer.addFuture(future);
return future;
} }
IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/, IEditor *FindInFilesSilverSearcher::openEditor(const SearchResultItem & /*item*/,

View File

@@ -27,6 +27,7 @@
#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>
@@ -44,7 +45,6 @@ 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,6 +66,7 @@ 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