LanguageClient: untrack request on cancel

Now we search for the key twice in the hash, but the hash shouldn't get
to big and the lookup doesn't happen very often.

Change-Id: I4751a8203321bb4c1ea5092b89593971d736e034
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2021-03-30 11:14:04 +02:00
parent f13d402b31
commit ae85170b66

View File

@@ -450,16 +450,14 @@ void Client::requestDocumentHighlights(TextEditor::TextEditorWidget *widget)
return; return;
} }
auto runningRequest = m_highlightRequests.find(widget); if (m_highlightRequests.contains(widget))
if (runningRequest != m_highlightRequests.end()) cancelRequest(m_highlightRequests.take(widget));
cancelRequest(runningRequest.value());
DocumentHighlightsRequest request( DocumentHighlightsRequest request(
TextDocumentPositionParams(TextDocumentIdentifier(uri), Position(widget->textCursor()))); TextDocumentPositionParams(TextDocumentIdentifier(uri), Position(widget->textCursor())));
auto connection = connect(widget, &QObject::destroyed, this, [this, widget]() { auto connection = connect(widget, &QObject::destroyed, this, [this, widget]() {
auto runningRequest = m_highlightRequests.find(widget); if (m_highlightRequests.contains(widget))
if (runningRequest != m_highlightRequests.end()) cancelRequest(m_highlightRequests.take(widget));
cancelRequest(runningRequest.value());
}); });
request.setResponseCallback( request.setResponseCallback(
[widget, this, uri, connection] [widget, this, uri, connection]
@@ -701,9 +699,8 @@ void Client::cursorPositionChanged(TextEditor::TextEditorWidget *widget)
QTimer *timer = m_documentHighlightsTimer[widget]; QTimer *timer = m_documentHighlightsTimer[widget];
if (!timer) { if (!timer) {
const auto uri = DocumentUri::fromFilePath(widget->textDocument()->filePath()); const auto uri = DocumentUri::fromFilePath(widget->textDocument()->filePath());
auto runningRequest = m_highlightRequests.find(widget); if (m_highlightRequests.contains(widget))
if (runningRequest != m_highlightRequests.end()) cancelRequest(m_highlightRequests.take(widget));
cancelRequest(runningRequest.value());
timer = new QTimer; timer = new QTimer;
timer->setSingleShot(true); timer->setSingleShot(true);
m_documentHighlightsTimer.insert(widget, timer); m_documentHighlightsTimer.insert(widget, timer);