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);