LanguageClient: deactivate documents on client shutdown

Change-Id: I0a3aa89b1390f3cb7d5816bb85d9fd538fb3f90b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2022-10-11 13:10:10 +02:00
parent 1b6728538e
commit 01b07c0563
2 changed files with 5 additions and 3 deletions

View File

@@ -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);
}
}
}

View File

@@ -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;