forked from qt-creator/qt-creator
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:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user