diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-05-28 09:43:48 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2021-06-07 10:17:44 +0000 |
commit | 269f15df6bdcf5aca7f1ac26141150dd482104fa (patch) | |
tree | 28f0771a84e3916dd35dd20b6ffa05f7851ad6c5 | |
parent | 4b19decaa71728b8129a38fe488da48e14b752d5 (diff) | |
download | qt-creator-269f15df6bdcf5aca7f1ac26141150dd482104fa.tar.gz |
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>
-rw-r--r-- | src/plugins/git/gitgrep.cpp | 5 | ||||
-rw-r--r-- | src/plugins/git/gitgrep.h | 2 | ||||
-rw-r--r-- | src/plugins/silversearcher/findinfilessilversearcher.cpp | 9 | ||||
-rw-r--r-- | src/plugins/silversearcher/findinfilessilversearcher.h | 3 |
4 files changed, 12 insertions, 7 deletions
diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp index 5128725ead..1f8bddd6e4 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<FileSearchResultList> 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 a24bfcfde0..5a734bd648 100644 --- a/src/plugins/git/gitgrep.h +++ b/src/plugins/git/gitgrep.h @@ -26,6 +26,7 @@ #pragma once #include <texteditor/basefilefind.h> +#include <utils/futuresynchronizer.h> #include <QCoreApplication> @@ -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 91670f2803..bcd1abaf08 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<FileSearchResultList> 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 798b7f9fd9..76be55390c 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.h +++ b/src/plugins/silversearcher/findinfilessilversearcher.h @@ -27,6 +27,7 @@ #include <coreplugin/find/ifindsupport.h> #include <texteditor/basefilefind.h> +#include <utils/futuresynchronizer.h> #include <utils/fileutils.h> @@ -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<QLineEdit> m_searchOptionsLineEdit; QString m_path; QString m_toolName; + Utils::FutureSynchronizer m_futureSynchronizer; }; } // namespace SilverSearcher |