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 <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2021-06-03 09:10:10 +02:00
parent d632b3eb4f
commit dc0b2c8b47
3 changed files with 10 additions and 3 deletions

View File

@@ -1019,6 +1019,7 @@ bool Client::reset()
m_runningAssistProcessors.clear();
qDeleteAll(m_documentHighlightsTimer);
m_documentHighlightsTimer.clear();
m_progressManager.reset();
return true;
}

View File

@@ -38,9 +38,7 @@ ProgressManager::ProgressManager()
ProgressManager::~ProgressManager()
{
const QList<ProgressToken> &tokens = m_progress.keys();
for (const ProgressToken &token : tokens)
endProgress(token);
reset();
}
void ProgressManager::handleProgress(const LanguageServerProtocol::ProgressParams &params)
@@ -61,6 +59,13 @@ void ProgressManager::setTitleForToken(const LanguageServerProtocol::ProgressTok
m_titles.insert(token, message);
}
void ProgressManager::reset()
{
const QList<ProgressToken> &tokens = m_progress.keys();
for (const ProgressToken &token : tokens)
endProgress(token);
}
bool ProgressManager::isProgressEndMessage(const LanguageServerProtocol::ProgressParams &params)
{
return Utils::holds_alternative<WorkDoneProgressEnd>(params.value());

View File

@@ -48,6 +48,7 @@ public:
void handleProgress(const LanguageServerProtocol::ProgressParams &params);
void setTitleForToken(const LanguageServerProtocol::ProgressToken &token,
const QString &message);
void reset();
static bool isProgressEndMessage(const LanguageServerProtocol::ProgressParams &params);