From 176ada90a8d5c286d12d8e85d087718d39fa5ba8 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 28 Jun 2023 09:55:53 +0200 Subject: [PATCH] BaseFileFind: Get rid of getAdditionalParameters() Remove recheckEnabled() and introduce setupSearch() virtual method. The latter is called just once per SearchResult instance (on first search), so we may store the additional parameter (current project file path) in lambda capture. Change-Id: I7683e818bec8f1d787bdb33c573248b252b47c78 Reviewed-by: Eike Ziller --- .../projectexplorer/currentprojectfind.cpp | 20 +++++++++++-------- .../projectexplorer/currentprojectfind.h | 2 +- src/plugins/texteditor/basefilefind.cpp | 17 +++++----------- src/plugins/texteditor/basefilefind.h | 3 +-- 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index fb688ae2d5d..942a1dc6e70 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -83,16 +83,20 @@ void CurrentProjectFind::handleProjectChanged() emit displayNameChanged(); } -void CurrentProjectFind::recheckEnabled(Core::SearchResult *search) +void CurrentProjectFind::setupSearch(Core::SearchResult *search) { - const FilePath projectFile = FilePath::fromVariant(getAdditionalParameters(search)); - for (Project *project : ProjectManager::projects()) { - if (projectFile == project->projectFilePath()) { - search->setSearchAgainEnabled(true); - return; + Project *project = ProjectTree::currentProject(); + const FilePath projectFile = project ? project->projectFilePath() : FilePath(); + connect(this, &IFindFilter::enabledChanged, search, [search, projectFile] { + const QList projects = ProjectManager::projects(); + for (Project *project : projects) { + if (projectFile == project->projectFilePath()) { + search->setSearchAgainEnabled(true); + return; + } } - } - search->setSearchAgainEnabled(false); + search->setSearchAgainEnabled(false); + }); } void CurrentProjectFind::writeSettings(QSettings *settings) diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h index 6554233d698..a2589bf2b9d 100644 --- a/src/plugins/projectexplorer/currentprojectfind.h +++ b/src/plugins/projectexplorer/currentprojectfind.h @@ -35,7 +35,7 @@ protected: private: void handleProjectChanged(); - void recheckEnabled(Core::SearchResult *search) override; + void setupSearch(Core::SearchResult *search) override; }; } // namespace Internal diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 5376c106176..efec7708720 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -313,6 +313,7 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags, tooltip.arg(IFindFilter::descriptionForFindFlags(findFlags)), txt, searchMode, SearchResultWindow::PreserveCaseEnabled, QString::fromLatin1("TextEditor")); + setupSearch(search); search->setTextToReplace(txt); search->setSearchAgainSupported(true); FileFindParameters parameters; @@ -333,9 +334,6 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags, connect(search, &SearchResult::searchAgainRequested, this, [this, search] { searchAgain(search); }); - connect(this, &BaseFileFind::enabledChanged, search, [this, search] { - recheckEnabled(search); - }); runSearch(search); } @@ -525,11 +523,11 @@ void BaseFileFind::searchAgain(SearchResult *search) runSearch(search); } -void BaseFileFind::recheckEnabled(SearchResult *search) +void BaseFileFind::setupSearch(SearchResult *search) { - if (!search) - return; - search->setSearchAgainEnabled(isEnabled()); + connect(this, &IFindFilter::enabledChanged, search, [this, search] { + search->setSearchAgainEnabled(isEnabled()); + }); } FilePaths BaseFileFind::replaceAll(const QString &text, const SearchResultItems &items, @@ -600,11 +598,6 @@ FilePaths BaseFileFind::replaceAll(const QString &text, const SearchResultItems return changes.keys(); } -QVariant BaseFileFind::getAdditionalParameters(SearchResult *search) -{ - return search->userData().value().additionalParameters; -} - QFuture BaseFileFind::executeSearch(const FileFindParameters ¶meters) { return d->m_searchEngines[parameters.searchEngineIndex]->executeSearch(parameters, this); diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h index b5195947493..c92b857b577 100644 --- a/src/plugins/texteditor/basefilefind.h +++ b/src/plugins/texteditor/basefilefind.h @@ -101,7 +101,6 @@ public: protected: virtual QVariant additionalParameters() const = 0; - static QVariant getAdditionalParameters(Core::SearchResult *search); virtual QString label() const = 0; // see Core::SearchResultWindow::startNewSearch virtual QString toolTip() const = 0; // see Core::SearchResultWindow::startNewSearch, // add %1 placeholder where the find flags should be put @@ -126,7 +125,7 @@ private: void doReplace(const QString &txt, const Utils::SearchResultItems &items, bool preserveCase); void hideHighlightAll(bool visible); void searchAgain(Core::SearchResult *search); - virtual void recheckEnabled(Core::SearchResult *search); + virtual void setupSearch(Core::SearchResult *search); void runNewSearch(const QString &txt, Utils::FindFlags findFlags, Core::SearchResultWindow::SearchMode searchMode);