diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index c6f5518707d..15fcded4ab2 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -1019,6 +1019,7 @@ bool Client::reset() m_runningAssistProcessors.clear(); qDeleteAll(m_documentHighlightsTimer); m_documentHighlightsTimer.clear(); + m_progressManager.reset(); return true; } diff --git a/src/plugins/languageclient/progressmanager.cpp b/src/plugins/languageclient/progressmanager.cpp index fe0e219376b..a8543378334 100644 --- a/src/plugins/languageclient/progressmanager.cpp +++ b/src/plugins/languageclient/progressmanager.cpp @@ -38,9 +38,7 @@ ProgressManager::ProgressManager() ProgressManager::~ProgressManager() { - const QList &tokens = m_progress.keys(); - for (const ProgressToken &token : tokens) - endProgress(token); + reset(); } void ProgressManager::handleProgress(const LanguageServerProtocol::ProgressParams ¶ms) @@ -61,6 +59,13 @@ void ProgressManager::setTitleForToken(const LanguageServerProtocol::ProgressTok m_titles.insert(token, message); } +void ProgressManager::reset() +{ + const QList &tokens = m_progress.keys(); + for (const ProgressToken &token : tokens) + endProgress(token); +} + bool ProgressManager::isProgressEndMessage(const LanguageServerProtocol::ProgressParams ¶ms) { return Utils::holds_alternative(params.value()); diff --git a/src/plugins/languageclient/progressmanager.h b/src/plugins/languageclient/progressmanager.h index 6cc93f07bad..1ae18ceaa9b 100644 --- a/src/plugins/languageclient/progressmanager.h +++ b/src/plugins/languageclient/progressmanager.h @@ -48,6 +48,7 @@ public: void handleProgress(const LanguageServerProtocol::ProgressParams ¶ms); void setTitleForToken(const LanguageServerProtocol::ProgressToken &token, const QString &message); + void reset(); static bool isProgressEndMessage(const LanguageServerProtocol::ProgressParams ¶ms);