From 997f28347bdde3c4efdb427cfb9081cdf4d531c6 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 15 Nov 2023 17:45:04 +0100 Subject: [PATCH] CppEditor: More direct access to CppQuickFixAssistProvider Change-Id: I764b68ee2f328cff28b4c6482d28015b36f15bca Reviewed-by: Qt CI Bot Reviewed-by: Christian Kandeler --- src/plugins/cppeditor/cppeditordocument.cpp | 2 +- src/plugins/cppeditor/cppeditorplugin.cpp | 7 ---- src/plugins/cppeditor/cppeditorplugin.h | 3 -- .../cppeditor/cppquickfixassistant.cpp | 41 ++++++++++--------- src/plugins/cppeditor/cppquickfixassistant.h | 7 +--- 5 files changed, 23 insertions(+), 37 deletions(-) diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp index dfc5af1c889..3d62aadcd65 100644 --- a/src/plugins/cppeditor/cppeditordocument.cpp +++ b/src/plugins/cppeditor/cppeditordocument.cpp @@ -133,7 +133,7 @@ TextEditor::IAssistProvider *CppEditorDocument::quickFixAssistProvider() const { if (const auto baseProvider = TextDocument::quickFixAssistProvider()) return baseProvider; - return CppEditorPlugin::instance()->quickFixProvider(); + return &cppQuickFixAssistProvider(); } void CppEditorDocument::recalculateSemanticInfoDetached() diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp index 37620e92b12..32864757b7d 100644 --- a/src/plugins/cppeditor/cppeditorplugin.cpp +++ b/src/plugins/cppeditor/cppeditorplugin.cpp @@ -18,7 +18,6 @@ #include "cppoutline.h" #include "cppprojectfile.h" #include "cppprojectupdater.h" -#include "cppquickfixassistant.h" #include "cppquickfixes.h" #include "cppquickfixprojectsettingswidget.h" #include "cppquickfixsettingspage.h" @@ -175,7 +174,6 @@ public: QAction *m_openTypeHierarchyAction = nullptr; QAction *m_openIncludeHierarchyAction = nullptr; - CppQuickFixAssistProvider m_quickFixProvider; CppQuickFixSettingsPage m_quickFixSettingsPage; QPointer m_cppCodeModelInspectorDialog; @@ -217,11 +215,6 @@ CppEditorPlugin *CppEditorPlugin::instance() return m_instance; } -CppQuickFixAssistProvider *CppEditorPlugin::quickFixProvider() const -{ - return &d->m_quickFixProvider; -} - void CppEditorPlugin::initialize() { d = new CppEditorPluginPrivate; diff --git a/src/plugins/cppeditor/cppeditorplugin.h b/src/plugins/cppeditor/cppeditorplugin.h index 463455fb655..bc2f2019470 100644 --- a/src/plugins/cppeditor/cppeditorplugin.h +++ b/src/plugins/cppeditor/cppeditorplugin.h @@ -15,7 +15,6 @@ namespace Internal { class CppEditorPluginPrivate; class CppFileSettings; -class CppQuickFixAssistProvider; class CppEditorPlugin : public ExtensionSystem::IPlugin { @@ -28,8 +27,6 @@ public: static CppEditorPlugin *instance(); - CppQuickFixAssistProvider *quickFixProvider() const; - static void clearHeaderSourceCache(); static Utils::FilePath licenseTemplatePath(ProjectExplorer::Project *project); static QString licenseTemplate(ProjectExplorer::Project *project); diff --git a/src/plugins/cppeditor/cppquickfixassistant.cpp b/src/plugins/cppeditor/cppquickfixassistant.cpp index 9202e639a28..1456ce56042 100644 --- a/src/plugins/cppeditor/cppquickfixassistant.cpp +++ b/src/plugins/cppeditor/cppquickfixassistant.cpp @@ -3,10 +3,9 @@ #include "cppquickfixassistant.h" -#include "cppeditorconstants.h" #include "cppeditorwidget.h" #include "cppmodelmanager.h" -#include "cppquickfixes.h" +#include "cppquickfix.h" #include "cpprefactoringchanges.h" #include @@ -21,32 +20,35 @@ using namespace CPlusPlus; using namespace TextEditor; -namespace CppEditor { -namespace Internal { +namespace CppEditor::Internal { -// ------------------------- -// CppQuickFixAssistProcessor -// ------------------------- -class CppQuickFixAssistProcessor : public IAssistProcessor +// CppQuickFixAssistProvider + +class CppQuickFixAssistProvider final : public IAssistProvider { - IAssistProposal *perform() override +public: + class CppQuickFixAssistProcessor final : public IAssistProcessor { - return GenericProposal::createProposal(interface(), quickFixOperations(interface())); + IAssistProposal *perform() final + { + return GenericProposal::createProposal(interface(), quickFixOperations(interface())); + } + }; + + TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const final + { + return new CppQuickFixAssistProcessor; } }; -// ------------------------- -// CppQuickFixAssistProvider -// ------------------------- - -IAssistProcessor *CppQuickFixAssistProvider::createProcessor(const AssistInterface *) const +IAssistProvider &cppQuickFixAssistProvider() { - return new CppQuickFixAssistProcessor; + static CppQuickFixAssistProvider theCppQuickFixAssistProvider; + return theCppQuickFixAssistProvider; } -// -------------------------- // CppQuickFixAssistInterface -// -------------------------- + CppQuickFixInterface::CppQuickFixInterface(CppEditorWidget *editor, AssistReason reason) : AssistInterface(editor->textCursor(), editor->textDocument()->filePath(), reason) , m_editor(editor) @@ -157,5 +159,4 @@ QuickFixOperations quickFixOperations(const TextEditor::AssistInterface *interfa return quickFixes; } -} // namespace Internal -} // namespace CppEditor +} // namespace CppEditor::Internal diff --git a/src/plugins/cppeditor/cppquickfixassistant.h b/src/plugins/cppeditor/cppquickfixassistant.h index 4aafe3dcf63..63a37f715a7 100644 --- a/src/plugins/cppeditor/cppquickfixassistant.h +++ b/src/plugins/cppeditor/cppquickfixassistant.h @@ -46,12 +46,7 @@ private: QList m_path; }; -class CppQuickFixAssistProvider : public TextEditor::IAssistProvider -{ -public: - CppQuickFixAssistProvider() = default; - TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override; -}; +TextEditor::IAssistProvider &cppQuickFixAssistProvider(); TextEditor::QuickFixOperations quickFixOperations(const TextEditor::AssistInterface *interface);