TextEditor: optimize setting refactor markers

emitting requestBlockUpdate is not for free so limitting it to blocks
that have changed improve the performance notable for documents with a
lot of refactoring markers.

Change-Id: Ie288a367d1d1d6a9f4359e37ff8486a1dfe36752
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2023-06-09 13:15:20 +02:00
parent 590cdf4f61
commit c547c8615f
8 changed files with 48 additions and 24 deletions

View File

@@ -311,8 +311,7 @@ void QmlJSEditorWidget::updateContextPane()
if (m_contextPane->isAvailable(this, info.document, newNode) &&
!m_contextPane->widget()->isVisible()) {
QList<RefactorMarker> markers
= RefactorMarker::filterOutType(refactorMarkers(), QT_QUICK_TOOLBAR_MARKER_ID);
RefactorMarkers markers;
if (UiObjectMember *m = newNode->uiObjectMemberCast()) {
const int start = qualifiedTypeNameId(m)->identifierToken.begin();
for (UiQualifiedId *q = qualifiedTypeNameId(m); q; q = q->next) {
@@ -333,10 +332,9 @@ void QmlJSEditorWidget::updateContextPane()
}
}
}
setRefactorMarkers(markers);
setRefactorMarkers(markers, QT_QUICK_TOOLBAR_MARKER_ID);
} else if (oldNode != newNode) {
setRefactorMarkers(
RefactorMarker::filterOutType(refactorMarkers(), QT_QUICK_TOOLBAR_MARKER_ID));
clearRefactorMarkers(QT_QUICK_TOOLBAR_MARKER_ID);
}
m_oldCursorPosition = position();
@@ -877,8 +875,7 @@ void QmlJSEditorWidget::showContextPane()
&scopeChain,
newNode, false, true);
m_oldCursorPosition = position();
setRefactorMarkers(
RefactorMarker::filterOutType(refactorMarkers(), QT_QUICK_TOOLBAR_MARKER_ID));
clearRefactorMarkers(QT_QUICK_TOOLBAR_MARKER_ID);
}
}