diff --git a/src/plugins/languageclient/languageclientsymbolsupport.cpp b/src/plugins/languageclient/languageclientsymbolsupport.cpp index a6c1a1659d3..163162d8b0e 100644 --- a/src/plugins/languageclient/languageclientsymbolsupport.cpp +++ b/src/plugins/languageclient/languageclientsymbolsupport.cpp @@ -285,11 +285,9 @@ void SymbolSupport::handleFindReferencesResponse(const FindReferencesRequest::Re Core::SearchResult *search = Core::SearchResultWindow::instance()->startNewSearch( tr("Find References with %1 for:").arg(m_client->name()), "", wordUnderCursor); search->addResults(generateSearchResultItems(*result), Core::SearchResult::AddOrdered); - QObject::connect(search, - &Core::SearchResult::activated, - [](const Core::SearchResultItem &item) { - Core::EditorManager::openEditorAtSearchResult(item); - }); + connect(search, &Core::SearchResult::activated, [](const Core::SearchResultItem &item) { + Core::EditorManager::openEditorAtSearchResult(item); + }); search->finishSearch(false); search->popup(); } @@ -493,27 +491,30 @@ Core::SearchResult *SymbolSupport::createSearch( const auto extraWidget = new ReplaceWidget; search->setAdditionalReplaceWidget(extraWidget); - QObject::connect(search, &Core::SearchResult::activated, [](const Core::SearchResultItem &item) { + connect(search, &Core::SearchResult::activated, [](const Core::SearchResultItem &item) { Core::EditorManager::openEditorAtSearchResult(item); }); - QObject::connect(search, &Core::SearchResult::replaceTextChanged, [search, extraWidget]() { + connect(search, &Core::SearchResult::replaceTextChanged, this, [search, extraWidget]() { extraWidget->showLabel(true); search->setUserData(search->userData().toList().first(2)); search->setSearchAgainEnabled(true); search->setReplaceEnabled(false); }); - QObject::connect(search, - &Core::SearchResult::searchAgainRequested, - [this, positionParams, search]() { - search->restart(); - requestRename(positionParams, search->textToReplace(), search); - }); - QObject::connect(search, - &Core::SearchResult::replaceButtonClicked, - [this, positionParams, search](const QString & /*replaceText*/, - const QList &checkedItems) { - applyRename(checkedItems, search); - }); + connect(search, &Core::SearchResult::searchAgainRequested, this, + [this, positionParams, search]() { + search->restart(); + requestRename(positionParams, search->textToReplace(), search); + }); + connect(search, &Core::SearchResult::replaceButtonClicked, this, + [this, positionParams, search](const QString & /*replaceText*/, + const QList &checkedItems) { + applyRename(checkedItems, search); + }); + + connect(this, &QObject::destroyed, search, [search, clientName = m_client->name()](){ + search->restart(); // clears potential current results + search->finishSearch(true, tr("%1 is not reachable anymore.").arg(clientName)); + }); return search; } diff --git a/src/plugins/languageclient/languageclientsymbolsupport.h b/src/plugins/languageclient/languageclientsymbolsupport.h index 9c55481e51d..304eeabeeae 100644 --- a/src/plugins/languageclient/languageclientsymbolsupport.h +++ b/src/plugins/languageclient/languageclientsymbolsupport.h @@ -23,7 +23,7 @@ namespace LanguageClient { class Client; -class LANGUAGECLIENT_EXPORT SymbolSupport +class LANGUAGECLIENT_EXPORT SymbolSupport : public QObject { Q_DECLARE_TR_FUNCTIONS(SymbolSupport) public: