From 01b07c0563c4f3f9465ef54bd7af2f766c1212f4 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 11 Oct 2022 13:10:10 +0200 Subject: LanguageClient: deactivate documents on client shutdown Change-Id: I0a3aa89b1390f3cb7d5816bb85d9fd538fb3f90b Reviewed-by: Christian Stenger --- src/plugins/languageclient/client.cpp | 1 + src/plugins/languageclient/languageclientmanager.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'src/plugins/languageclient') diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index be68f93363..d61f3c720a 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -879,6 +879,7 @@ void Client::deactivateDocument(TextEditor::TextDocument *document) TextEditor::TextEditorWidget *widget = textEditor->editorWidget(); widget->removeHoverHandler(&d->m_hoverHandler); widget->setExtraSelections(TextEditor::TextEditorWidget::CodeSemanticsSelection, {}); + updateEditorToolBar(editor); } } } diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index d3c2220fc8..d4f5c44264 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -199,10 +199,10 @@ void LanguageClientManager::shutdownClient(Client *client) if (!client) return; qCDebug(Log) << "request client shutdown: " << client->name() << client; - // reset the documents for that client already when requesting the shutdown so they can get - // reassigned to another server right after this request to another server + // reset and deactivate the documents for that client by assigning a null client already when + // requesting the shutdown so they can get reassigned to another server right after this request for (TextEditor::TextDocument *document : managerInstance->m_clientForDocument.keys(client)) - managerInstance->m_clientForDocument.remove(document); + openDocumentWithClient(document, nullptr); if (client->reachable()) client->shutdown(); else if (client->state() != Client::Shutdown && client->state() != Client::ShutdownRequested) @@ -409,6 +409,7 @@ void LanguageClientManager::openDocumentWithClient(TextEditor::TextDocument *doc Client *currentClient = clientForDocument(document); if (client == currentClient) return; + managerInstance->m_clientForDocument.remove(document); if (currentClient) currentClient->deactivateDocument(document); managerInstance->m_clientForDocument[document] = client; -- cgit v1.2.1