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

@@ -202,8 +202,7 @@ public:
for (Core::IEditor *editor : editors) {
if (auto textEditor = qobject_cast<BaseTextEditor *>(editor)) {
TextEditorWidget *widget = textEditor->editorWidget();
widget->setRefactorMarkers(
RefactorMarker::filterOutType(widget->refactorMarkers(), m_id));
widget->clearRefactorMarkers(m_id);
widget->removeHoverHandler(&m_hoverHandler);
}
}
@@ -910,8 +909,7 @@ void Client::deactivateDocument(TextEditor::TextDocument *document)
TextEditor::TextEditorWidget *widget = textEditor->editorWidget();
widget->removeHoverHandler(&d->m_hoverHandler);
widget->setExtraSelections(TextEditor::TextEditorWidget::CodeSemanticsSelection, {});
widget->setRefactorMarkers(
TextEditor::RefactorMarker::filterOutType(widget->refactorMarkers(), id()));
widget->clearRefactorMarkers(id());
updateEditorToolBar(editor);
}
}
@@ -1158,7 +1156,7 @@ void Client::documentContentsChanged(TextEditor::TextDocument *document,
TextEditorWidget *widget = editor->editorWidget();
QTC_ASSERT(widget, continue);
delete d->m_documentHighlightsTimer.take(widget);
widget->setRefactorMarkers(RefactorMarker::filterOutType(widget->refactorMarkers(), id()));
widget->clearRefactorMarkers(id());
}
d->m_documentUpdateTimer.start();
}