Index: addons/symbolviewer/plugin_katesymbolviewer.h =================================================================== --- addons/symbolviewer/plugin_katesymbolviewer.h +++ addons/symbolviewer/plugin_katesymbolviewer.h @@ -128,6 +128,7 @@ QTimer m_updateTimer; QTimer m_currItemTimer; + int m_oldCursorLine; void updatePixmapScroll(); Index: addons/symbolviewer/plugin_katesymbolviewer.cpp =================================================================== --- addons/symbolviewer/plugin_katesymbolviewer.cpp +++ addons/symbolviewer/plugin_katesymbolviewer.cpp @@ -177,9 +177,6 @@ void KatePluginSymbolViewerView::slotRefreshSymbol() { - if (!m_symbols) - return; - parseSymbols(); } @@ -199,7 +196,7 @@ void KatePluginSymbolViewerView::slotDocChanged() { - slotRefreshSymbol(); + slotDocEdited(); KTextEditor::View *view = m_mainWindow->activeView(); //qDebug()<<"Document changed !!!!" << view; @@ -214,6 +211,7 @@ void KatePluginSymbolViewerView::slotDocEdited() { + m_currItemTimer.stop(); // Avoid unneeded update m_updateTimer.start(500); } @@ -235,7 +233,13 @@ if (!doc) { return; } + int currLine = editView->cursorPositionVirtual().line(); + if (currLine == m_oldCursorLine) { + // Nothing to do + return; + } + m_oldCursorLine = currLine; int newItemLine = 0; QTreeWidgetItem *newItem = nullptr; @@ -291,6 +295,9 @@ void KatePluginSymbolViewerView::parseSymbols(void) { + if (!m_symbols) + return; + m_symbols->clear(); // Qt docu recommends to populate view with disabled sorting // https://doc.qt.io/qt-5/qtreeview.html#sortingEnabled-prop @@ -335,6 +342,7 @@ else new QTreeWidgetItem(m_symbols, QStringList(i18n("Sorry. Language not supported yet") ) ); + m_oldCursorLine = -1; updateCurrTreeItem(); if (m_sort->isChecked()) m_symbols->sortItems(0, Qt::AscendingOrder);