From dc0b2c8b47fe4602de319702ea4601df8450fb82 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 3 Jun 2021 09:10:10 +0200 Subject: [PATCH] LanguageClient: clear running progress when resetting client Otherwise we will have dangling progress bars after a crashed server was restarted. Change-Id: I889d201d7cf196623978638db67397203a8f4564 Reviewed-by: Christian Stenger --- src/plugins/languageclient/client.cpp | 1 + src/plugins/languageclient/progressmanager.cpp | 11 ++++++++--- src/plugins/languageclient/progressmanager.h | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) 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);