TextEditor: Use callback in refactoring markers

Allows to trigger actions without adding specific handling into the
editor.

Change-Id: Ia63d65d3feca37bcefca1b6322ade039027a92d8
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2019-01-24 06:39:20 +01:00
parent a420374976
commit 7b7a2ad630
13 changed files with 56 additions and 86 deletions

View File

@@ -324,13 +324,14 @@ void CppEditorWidget::onCppDocumentUpdated()
void CppEditorWidget::onCodeWarningsUpdated(unsigned revision,
const QList<QTextEdit::ExtraSelection> selections,
const TextEditor::RefactorMarkers &refactorMarkers)
const RefactorMarkers &refactorMarkers)
{
if (revision != documentRevision())
return;
setExtraSelections(TextEditorWidget::CodeWarningsSelection, selections);
setRefactorMarkers(refactorMarkersWithoutClangMarkers() + refactorMarkers);
setRefactorMarkers(refactorMarkers + RefactorMarker::filterOutType(
this->refactorMarkers(), CppTools::Constants::CPP_CLANG_FIXIT_AVAILABLE_MARKER_ID));
}
void CppEditorWidget::onIfdefedOutBlocksUpdated(unsigned revision,
@@ -753,26 +754,6 @@ unsigned CppEditorWidget::documentRevision() const
return document()->revision();
}
static bool isClangFixItAvailableMarker(const RefactorMarker &marker)
{
return marker.data.toString()
== QLatin1String(CppTools::Constants::CPP_CLANG_FIXIT_AVAILABLE_MARKER_ID);
}
RefactorMarkers CppEditorWidget::refactorMarkersWithoutClangMarkers() const
{
RefactorMarkers clearedRefactorMarkers;
foreach (const RefactorMarker &marker, refactorMarkers()) {
if (isClangFixItAvailableMarker(marker))
continue;
clearedRefactorMarkers.append(marker);
}
return clearedRefactorMarkers;
}
CppTools::FollowSymbolInterface &CppEditorWidget::followSymbolInterface() const
{
return d->m_modelManager->followSymbolInterface();
@@ -1026,19 +1007,6 @@ QSharedPointer<FunctionDeclDefLink> CppEditorWidget::declDefLink() const
return d->m_declDefLink;
}
void CppEditorWidget::onRefactorMarkerClicked(const RefactorMarker &marker)
{
if (marker.data.canConvert<FunctionDeclDefLink::Marker>()) {
applyDeclDefLinkChanges(true);
} else if (isClangFixItAvailableMarker(marker)) {
int line, column;
if (Utils::Text::convertPosition(document(), marker.cursor.position(), &line, &column)) {
setTextCursor(marker.cursor);
invokeAssist(TextEditor::QuickFix);
}
}
}
void CppEditorWidget::updateFunctionDeclDefLink()
{
const int pos = textCursor().selectionStart();