diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp index 5128725ead4..1f8bddd6e46 100644 --- a/src/plugins/git/gitgrep.cpp +++ b/src/plugins/git/gitgrep.cpp @@ -238,6 +238,7 @@ static bool isGitDirectory(const QString &path) GitGrep::GitGrep(GitClient *client) : m_client(client) { + m_futureSynchronizer.setCancelOnWait(true); m_widget = new QWidget; auto layout = new QHBoxLayout(m_widget); layout->setContentsMargins(0, 0, 0, 0); @@ -307,7 +308,9 @@ void GitGrep::writeSettings(QSettings *settings) const QFuture GitGrep::executeSearch(const TextEditor::FileFindParameters ¶meters, 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, diff --git a/src/plugins/git/gitgrep.h b/src/plugins/git/gitgrep.h index a24bfcfde09..5a734bd648e 100644 --- a/src/plugins/git/gitgrep.h +++ b/src/plugins/git/gitgrep.h @@ -26,6 +26,7 @@ #pragma once #include +#include #include @@ -62,6 +63,7 @@ private: QWidget *m_widget; Utils::FancyLineEdit *m_treeLineEdit; QCheckBox *m_recurseSubmodules = nullptr; + Utils::FutureSynchronizer m_futureSynchronizer; }; } // namespace Internal diff --git a/src/plugins/silversearcher/findinfilessilversearcher.cpp b/src/plugins/silversearcher/findinfilessilversearcher.cpp index 91670f28035..bcd1abaf084 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.cpp +++ b/src/plugins/silversearcher/findinfilessilversearcher.cpp @@ -163,6 +163,7 @@ FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent) , m_path("ag") , m_toolName("SilverSearcher") { + m_futureSynchronizer.setCancelOnWait(true); m_widget = new QWidget; auto layout = new QHBoxLayout(m_widget); layout->setContentsMargins(0, 0, 0, 0); @@ -182,10 +183,6 @@ FindInFilesSilverSearcher::FindInFilesSilverSearcher(QObject *parent) } } -FindInFilesSilverSearcher::~FindInFilesSilverSearcher() -{ -} - QVariant FindInFilesSilverSearcher::parameters() const { SilverSearcherSearchOptions silverSearcherSearchOptions; @@ -216,7 +213,9 @@ void FindInFilesSilverSearcher::writeSettings(QSettings *settings) const QFuture FindInFilesSilverSearcher::executeSearch( const FileFindParameters ¶meters, 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*/, diff --git a/src/plugins/silversearcher/findinfilessilversearcher.h b/src/plugins/silversearcher/findinfilessilversearcher.h index 798b7f9fd90..76be55390c1 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.h +++ b/src/plugins/silversearcher/findinfilessilversearcher.h @@ -27,6 +27,7 @@ #include #include +#include #include @@ -44,7 +45,6 @@ class FindInFilesSilverSearcher : public TextEditor::SearchEngine public: explicit FindInFilesSilverSearcher(QObject *parent); - ~FindInFilesSilverSearcher() override; // TextEditor::FileFindExtension QString title() const override; @@ -66,6 +66,7 @@ private: QPointer m_searchOptionsLineEdit; QString m_path; QString m_toolName; + Utils::FutureSynchronizer m_futureSynchronizer; }; } // namespace SilverSearcher