From 3cb772cad88adf1c4d0a548631d3f7dcad95cd69 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 9 Jan 2025 12:19:04 +0100 Subject: [PATCH] LanguageClient: avoid updating current outline item .. after we received new content for the outline if the user has explicitly disabled the cursor synchronization. Change-Id: Idc98457d26c094a6d420d282c71d50a2b19e1df7 Reviewed-by: Christian Stenger --- .../languageclient/languageclientoutline.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/plugins/languageclient/languageclientoutline.cpp b/src/plugins/languageclient/languageclientoutline.cpp index 72bebe5b774..e27a99bd098 100644 --- a/src/plugins/languageclient/languageclientoutline.cpp +++ b/src/plugins/languageclient/languageclientoutline.cpp @@ -120,7 +120,7 @@ public: private: void handleResponse(const DocumentUri &uri, const DocumentSymbolsResult &response); void updateTextCursor(const QModelIndex &proxyIndex); - void updateSelectionInTree(const QTextCursor ¤tCursor); + void updateSelectionInTree(); void onItemActivated(const QModelIndex &index); QPointer m_client; @@ -168,10 +168,7 @@ LanguageClientOutlineWidget::LanguageClientOutlineWidget(Client *client, connect(&m_view, &QAbstractItemView::activated, this, &LanguageClientOutlineWidget::onItemActivated); connect(m_editor->editorWidget(), &TextEditor::TextEditorWidget::cursorPositionChanged, - this, [this](){ - if (m_sync) - updateSelectionInTree(m_editor->textCursor()); - }); + this, &LanguageClientOutlineWidget::updateSelectionInTree); setFocusProxy(&m_view); } @@ -183,8 +180,7 @@ QList LanguageClientOutlineWidget::filterMenuActions() const void LanguageClientOutlineWidget::setCursorSynchronization(bool syncWithCursor) { m_sync = syncWithCursor; - if (m_sync && m_editor) - updateSelectionInTree(m_editor->textCursor()); + updateSelectionInTree(); } void LanguageClientOutlineWidget::setSorted(bool sorted) @@ -237,7 +233,7 @@ void LanguageClientOutlineWidget::handleResponse(const DocumentUri &uri, m_view.expandAll(); // The list has changed, update the current items - updateSelectionInTree(m_editor->textCursor()); + updateSelectionInTree(); } void LanguageClientOutlineWidget::updateTextCursor(const QModelIndex &proxyIndex) @@ -263,8 +259,11 @@ static LanguageClientOutlineItem *itemForCursor(const LanguageClientOutlineModel return result; } -void LanguageClientOutlineWidget::updateSelectionInTree(const QTextCursor ¤tCursor) +void LanguageClientOutlineWidget::updateSelectionInTree() { + if (!m_sync || !m_editor) + return; + const QTextCursor currentCursor = m_editor->editorWidget()->textCursor(); if (LanguageClientOutlineItem *item = itemForCursor(m_model, currentCursor)) { const QModelIndex index = m_proxyModel.mapFromSource(m_model.indexForItem(item)); m_view.setCurrentIndex(index);