void FunctionDeclDefLink::showMarker(CppEditorWidget *editor) { if (hasMarker) return; QList<RefactorMarker> markers = RefactorMarker::filterOutType( editor->refactorMarkers(), CppTools::Constants::CPP_FUNCTION_DECL_DEF_LINK_MARKER_ID); RefactorMarker marker; // show the marker at the end of the linked area, with a special case // to avoid it overlapping with a trailing semicolon marker.cursor = editor->textCursor(); marker.cursor.setPosition(linkSelection.selectionEnd()); const int endBlockNr = marker.cursor.blockNumber(); marker.cursor.setPosition(linkSelection.selectionEnd() + 1, QTextCursor::KeepAnchor); if (marker.cursor.blockNumber() != endBlockNr || marker.cursor.selectedText() != QLatin1String(";")) { marker.cursor.setPosition(linkSelection.selectionEnd()); } QString message; if (targetDeclaration->asFunctionDefinition()) message = tr("Apply changes to definition"); else message = tr("Apply changes to declaration"); Core::Command *quickfixCommand = Core::ActionManager::command(TextEditor::Constants::QUICKFIX_THIS); if (quickfixCommand) message = ProxyAction::stringWithAppendedShortcut(message, quickfixCommand->keySequence()); marker.tooltip = message; marker.type = CppTools::Constants::CPP_FUNCTION_DECL_DEF_LINK_MARKER_ID; marker.callback = [](TextEditor::TextEditorWidget *widget) { if (auto cppEditor = qobject_cast<CppEditorWidget *>(widget)) cppEditor->applyDeclDefLinkChanges(true); }; markers += marker; editor->setRefactorMarkers(markers); hasMarker = true; }
void FunctionDeclDefLink::showMarker(CPPEditorWidget *editor) { if (hasMarker) return; QList<TextEditor::RefactorMarker> markers = removeMarkersOfType<Marker>(editor->refactorMarkers()); TextEditor::RefactorMarker marker; // show the marker at the end of the linked area, with a special case // to avoid it overlapping with a trailing semicolon marker.cursor = editor->textCursor(); marker.cursor.setPosition(linkSelection.selectionEnd()); const int endBlockNr = marker.cursor.blockNumber(); marker.cursor.setPosition(linkSelection.selectionEnd() + 1, QTextCursor::KeepAnchor); if (marker.cursor.blockNumber() != endBlockNr || marker.cursor.selectedText() != QLatin1String(";")) { marker.cursor.setPosition(linkSelection.selectionEnd()); } QString message; if (targetDeclaration->asFunctionDefinition()) message = tr("Apply changes to definition"); else message = tr("Apply changes to declaration"); Core::ActionManager *actionManager = Core::ICore::actionManager(); Core::Command *quickfixCommand = actionManager->command(TextEditor::Constants::QUICKFIX_THIS); if (quickfixCommand) message = Utils::ProxyAction::stringWithAppendedShortcut(message, quickfixCommand->keySequence()); marker.tooltip = message; marker.data = QVariant::fromValue(Marker()); markers += marker; editor->setRefactorMarkers(markers); hasMarker = true; }