diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-01-11 17:06:26 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-01-16 08:31:11 +0000 |
commit | 5e861d2be6729b7d4b0927b1d334f6298927013e (patch) | |
tree | ced4c2b983c44173b6331e406a1f255f6881d089 | |
parent | 53a744a6dfe3999b86e9adaab3c05d60322a251e (diff) | |
download | qt-creator-5e861d2be6729b7d4b0927b1d334f6298927013e.tar.gz |
CppTools: Move CppHoverHandler to CppTools
This is in preparation for clang code model to provide its own hover
handler.
Change-Id: Ifbdd96f427989bd5d1fbc4badb9c38108485c2f2
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
20 files changed, 69 insertions, 44 deletions
diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index f66392d64e..9271975dfd 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -33,6 +33,7 @@ #include <coreplugin/editormanager/editormanager.h> #include <cpptools/cppfollowsymbolundercursor.h> +#include <cpptools/cpphoverhandler.h> #include <cpptools/cppmodelmanager.h> #include <cpptools/editordocumenthandle.h> #include <cpptools/projectinfo.h> @@ -111,6 +112,11 @@ CppTools::CppCompletionAssistProvider *ModelManagerSupportClang::completionAssis return &m_completionAssistProvider; } +TextEditor::BaseHoverHandler *ModelManagerSupportClang::createHoverHandler() +{ + return new CppTools::CppHoverHandler; +} + CppTools::FollowSymbolInterface &ModelManagerSupportClang::followSymbolInterface() { return *m_followSymbol; diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.h b/src/plugins/clangcodemodel/clangmodelmanagersupport.h index 842c1d75fa..92f253c5a8 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.h +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.h @@ -61,6 +61,7 @@ public: ~ModelManagerSupportClang(); CppTools::CppCompletionAssistProvider *completionAssistProvider() override; + TextEditor::BaseHoverHandler *createHoverHandler() override; CppTools::BaseEditorDocumentProcessor *createEditorDocumentProcessor( TextEditor::TextDocument *baseTextDocument) override; CppTools::FollowSymbolInterface &followSymbolInterface() override; diff --git a/src/plugins/cppeditor/cppeditor.pro b/src/plugins/cppeditor/cppeditor.pro index 0bc3391ce8..74b1daf63b 100644 --- a/src/plugins/cppeditor/cppeditor.pro +++ b/src/plugins/cppeditor/cppeditor.pro @@ -12,10 +12,8 @@ HEADERS += \ cppeditorenums.h \ cppeditorplugin.h \ cppeditorwidget.h \ - cppelementevaluator.h \ cppfunctiondecldeflink.h \ cpphighlighter.h \ - cpphoverhandler.h \ cppparsecontext.h \ cppincludehierarchy.h \ cppinsertvirtualmethods.h \ @@ -38,10 +36,8 @@ SOURCES += \ cppeditordocument.cpp \ cppeditorplugin.cpp \ cppeditorwidget.cpp \ - cppelementevaluator.cpp \ cppfunctiondecldeflink.cpp \ cpphighlighter.cpp \ - cpphoverhandler.cpp \ cppparsecontext.cpp \ cppincludehierarchy.cpp \ cppinsertvirtualmethods.cpp \ diff --git a/src/plugins/cppeditor/cppeditor.qbs b/src/plugins/cppeditor/cppeditor.qbs index 5d8b17adb4..5a44f175eb 100644 --- a/src/plugins/cppeditor/cppeditor.qbs +++ b/src/plugins/cppeditor/cppeditor.qbs @@ -39,14 +39,10 @@ QtcPlugin { "cppeditorenums.h", "cppeditorplugin.cpp", "cppeditorplugin.h", - "cppelementevaluator.cpp", - "cppelementevaluator.h", "cppfunctiondecldeflink.cpp", "cppfunctiondecldeflink.h", "cpphighlighter.cpp", "cpphighlighter.h", - "cpphoverhandler.cpp", - "cpphoverhandler.h", "cppincludehierarchy.cpp", "cppincludehierarchy.h", "cppinsertvirtualmethods.cpp", diff --git a/src/plugins/cppeditor/cppeditorplugin.cpp b/src/plugins/cppeditor/cppeditorplugin.cpp index 3f352f1ffe..27cbf4827e 100644 --- a/src/plugins/cppeditor/cppeditorplugin.cpp +++ b/src/plugins/cppeditor/cppeditorplugin.cpp @@ -31,7 +31,6 @@ #include "cppeditorwidget.h" #include "cppeditordocument.h" #include "cpphighlighter.h" -#include "cpphoverhandler.h" #include "cppincludehierarchy.h" #include "cppoutline.h" #include "cppquickfixassistant.h" @@ -53,6 +52,7 @@ #include <coreplugin/icore.h> #include <coreplugin/navigationwidget.h> #include <coreplugin/progressmanager/progressmanager.h> +#include <cpptools/cpphoverhandler.h> #include <cpptools/cpptoolsconstants.h> #include <texteditor/texteditoractionhandler.h> #include <texteditor/texteditorconstants.h> @@ -105,7 +105,7 @@ public: | TextEditorActionHandler::UnCollapseAll | TextEditorActionHandler::FollowSymbolUnderCursor); - addHoverHandler(new CppHoverHandler); + addHoverHandler(CppModelManager::instance()->createHoverHandler()); addHoverHandler(new ColorPreviewHoverHandler); addHoverHandler(new ResourcePreviewHoverHandler); } @@ -145,7 +145,6 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err { Q_UNUSED(errorMessage) - addAutoReleasedObject(new CppEditorFactory); addAutoReleasedObject(new CppOutlineWidgetFactory); addAutoReleasedObject(new CppTypeHierarchyFactory); addAutoReleasedObject(new CppIncludeHierarchyFactory); @@ -268,6 +267,10 @@ bool CppEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err void CppEditorPlugin::extensionsInitialized() { + // Add the editor factory here instead of in initialize() + // so that the Clang Code Model has a chance to hook in. + addAutoReleasedObject(new CppEditorFactory); + if (!HostOsInfo::isMacHost() && !HostOsInfo::isWindowsHost()) { FileIconProvider::registerIconOverlayForMimeType( QIcon(creatorTheme()->imageFile(Theme::IconOverlayCppSource, QLatin1String(":/cppeditor/images/qt_cpp.png"))), diff --git a/src/plugins/cppeditor/cppincludehierarchy.cpp b/src/plugins/cppeditor/cppincludehierarchy.cpp index 1f5f089181..22bebf3daf 100644 --- a/src/plugins/cppeditor/cppincludehierarchy.cpp +++ b/src/plugins/cppeditor/cppincludehierarchy.cpp @@ -29,13 +29,13 @@ #include "cppeditorwidget.h" #include "cppeditorconstants.h" #include "cppeditorplugin.h" -#include "cppelementevaluator.h" #include <coreplugin/editormanager/editormanager.h> #include <coreplugin/fileiconprovider.h> #include <coreplugin/find/itemviewfind.h> #include <cpptools/baseeditordocumentprocessor.h> +#include <cpptools/cppelementevaluator.h> #include <cpptools/cppmodelmanager.h> #include <cpptools/cpptoolsbridge.h> #include <cpptools/editordocumenthandle.h> diff --git a/src/plugins/cppeditor/cpptypehierarchy.cpp b/src/plugins/cppeditor/cpptypehierarchy.cpp index 54eaaf2f57..0b3198d4c9 100644 --- a/src/plugins/cppeditor/cpptypehierarchy.cpp +++ b/src/plugins/cppeditor/cpptypehierarchy.cpp @@ -28,11 +28,11 @@ #include "cppeditorconstants.h" #include "cppeditor.h" #include "cppeditorwidget.h" -#include "cppelementevaluator.h" #include "cppeditorplugin.h" #include <coreplugin/find/itemviewfind.h> #include <coreplugin/editormanager/editormanager.h> +#include <cpptools/cppelementevaluator.h> #include <utils/algorithm.h> #include <utils/annotateditemdelegate.h> #include <utils/navigationtreeview.h> @@ -46,6 +46,7 @@ #include <QVBoxLayout> using namespace CppEditor; +using namespace CppTools; using namespace CppEditor::Internal; using namespace Utils; diff --git a/src/plugins/cppeditor/cpptypehierarchy.h b/src/plugins/cppeditor/cpptypehierarchy.h index 355f87065d..e99d8a180e 100644 --- a/src/plugins/cppeditor/cpptypehierarchy.h +++ b/src/plugins/cppeditor/cpptypehierarchy.h @@ -47,11 +47,12 @@ class NavigationTreeView; class AnnotatedItemDelegate; } +namespace CppTools { class CppClass; } + namespace CppEditor { namespace Internal { class CppEditorWidget; -class CppClass; class CppTypeHierarchyModel : public QStandardItemModel { @@ -75,8 +76,8 @@ public: void perform(); private: - typedef QList<CppClass> CppClass::*HierarchyMember; - void buildHierarchy(const CppClass &cppClass, QStandardItem *parent, + typedef QList<CppTools::CppClass> CppTools::CppClass::*HierarchyMember; + void buildHierarchy(const CppTools::CppClass &cppClass, QStandardItem *parent, bool isRoot, HierarchyMember member); void showNoTypeHierarchyLabel(); void showTypeHierarchy(); diff --git a/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp b/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp index 1f7576c49b..ef025a6179 100644 --- a/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp +++ b/src/plugins/cppeditor/followsymbol_switchmethoddecldef_test.cpp @@ -27,8 +27,8 @@ #include "cppeditorwidget.h" #include "cppeditorplugin.h" #include "cppeditortestcase.h" -#include "cppelementevaluator.h" +#include <cpptools/cppelementevaluator.h> #include <cpptools/cppfollowsymbolundercursor.h> #include <cpptools/cppvirtualfunctionassistprovider.h> #include <cpptools/cppvirtualfunctionproposalitem.h> diff --git a/src/plugins/cppeditor/cppelementevaluator.cpp b/src/plugins/cpptools/cppelementevaluator.cpp index 1e95850a18..3281783ef2 100644 --- a/src/plugins/cppeditor/cppelementevaluator.cpp +++ b/src/plugins/cpptools/cppelementevaluator.cpp @@ -42,8 +42,7 @@ using namespace CPlusPlus; -namespace CppEditor { -namespace Internal { +namespace CppTools { static QStringList stripName(const QString &name) { @@ -471,5 +470,4 @@ CppEnumerator::CppEnumerator(EnumeratorDeclaration *declaration) tooltip.append(QLatin1String(" = ") + enumeratorValue); } -} // namespace Internal -} // namespace CppEditor +} // namespace CppTools diff --git a/src/plugins/cppeditor/cppelementevaluator.h b/src/plugins/cpptools/cppelementevaluator.h index 91ef68e2d8..af994989ed 100644 --- a/src/plugins/cppeditor/cppelementevaluator.h +++ b/src/plugins/cpptools/cppelementevaluator.h @@ -25,6 +25,8 @@ #pragma once +#include "cpptools_global.h" + #include <texteditor/texteditor.h> #include <texteditor/helpitem.h> @@ -41,14 +43,11 @@ class LookupItem; class LookupContext; } -namespace CppTools { class CppModelManager; } - -namespace CppEditor { -namespace Internal { - +namespace CppTools { class CppElement; +class CppModelManager; -class CppElementEvaluator +class CPPTOOLS_EXPORT CppElementEvaluator { public: explicit CppElementEvaluator(TextEditor::TextEditorWidget *editor); @@ -82,7 +81,7 @@ private: QString m_diagnosis; }; -class CppElement +class CPPTOOLS_EXPORT CppElement { protected: CppElement(); @@ -189,5 +188,4 @@ public: explicit CppEnumerator(CPlusPlus::EnumeratorDeclaration *declaration); }; -} // namespace Internal -} // namespace CppEditor +} // namespace CppTools diff --git a/src/plugins/cppeditor/cpphoverhandler.cpp b/src/plugins/cpptools/cpphoverhandler.cpp index d480c12c61..d01102f4f2 100644 --- a/src/plugins/cppeditor/cpphoverhandler.cpp +++ b/src/plugins/cpptools/cpphoverhandler.cpp @@ -25,7 +25,6 @@ #include "cpphoverhandler.h" -#include "cppeditorconstants.h" #include "cppelementevaluator.h" #include <coreplugin/helpmanager.h> @@ -89,8 +88,7 @@ void processWithEditorDocumentProcessor(TextEditorWidget *editorWidget, } // anonymous namespace -namespace CppEditor { -namespace Internal { +namespace CppTools { void CppHoverHandler::identifyMatch(TextEditorWidget *editorWidget, int pos) { @@ -186,5 +184,4 @@ void CppHoverHandler::operateTooltip(TextEditor::TextEditorWidget *editorWidget, helpId); } -} // namespace Internal -} // namespace CppEditor +} // namespace CppTools diff --git a/src/plugins/cppeditor/cpphoverhandler.h b/src/plugins/cpptools/cpphoverhandler.h index accc275152..b728b970fe 100644 --- a/src/plugins/cppeditor/cpphoverhandler.h +++ b/src/plugins/cpptools/cpphoverhandler.h @@ -25,12 +25,13 @@ #pragma once +#include "cpptools_global.h" + #include <texteditor/basehoverhandler.h> -namespace CppEditor { -namespace Internal { +namespace CppTools { -class CppHoverHandler : public TextEditor::BaseHoverHandler +class CPPTOOLS_EXPORT CppHoverHandler : public TextEditor::BaseHoverHandler { private: void identifyMatch(TextEditor::TextEditorWidget *editorWidget, int pos) override; @@ -41,5 +42,4 @@ private: int m_positionForEditorDocumentProcessor = -1; }; -} // namespace Internal -} // namespace CppEditor +} // namespace CppTools diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 9beb97b2f3..f1b1d2c2bd 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -1293,8 +1293,13 @@ CppCompletionAssistProvider *CppModelManager::completionAssistProvider() const return d->m_activeModelManagerSupport->completionAssistProvider(); } +TextEditor::BaseHoverHandler *CppModelManager::createHoverHandler() const +{ + return d->m_activeModelManagerSupport->createHoverHandler(); +} + BaseEditorDocumentProcessor *CppModelManager::createEditorDocumentProcessor( - TextEditor::TextDocument *baseTextDocument) const + TextEditor::TextDocument *baseTextDocument) const { return d->m_activeModelManagerSupport->createEditorDocumentProcessor(baseTextDocument); } diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index bf05c26156..d8b8d2f192 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -44,7 +44,10 @@ class IEditor; } namespace CPlusPlus { class LookupContext; } namespace ProjectExplorer { class Project; } -namespace TextEditor { class TextDocument; } +namespace TextEditor { +class BaseHoverHandler; +class TextDocument; +} // namespace TextEditor namespace CppTools { @@ -173,7 +176,8 @@ public: void activateClangCodeModel(ModelManagerSupportProvider *modelManagerSupportProvider); CppCompletionAssistProvider *completionAssistProvider() const; BaseEditorDocumentProcessor *createEditorDocumentProcessor( - TextEditor::TextDocument *baseTextDocument) const; + TextEditor::TextDocument *baseTextDocument) const; + TextEditor::BaseHoverHandler *createHoverHandler() const; FollowSymbolInterface &followSymbolInterface() const; void setIndexingSupport(CppIndexingSupport *indexingSupport); diff --git a/src/plugins/cpptools/cppmodelmanagersupport.h b/src/plugins/cpptools/cppmodelmanagersupport.h index 306f1aa974..06102f6007 100644 --- a/src/plugins/cpptools/cppmodelmanagersupport.h +++ b/src/plugins/cpptools/cppmodelmanagersupport.h @@ -30,7 +30,10 @@ #include <QSharedPointer> #include <QString> -namespace TextEditor { class TextDocument; } +namespace TextEditor { +class TextDocument; +class BaseHoverHandler; +} // namespace TextEditor namespace CppTools { @@ -48,6 +51,7 @@ public: virtual ~ModelManagerSupport() = 0; virtual CppCompletionAssistProvider *completionAssistProvider() = 0; + virtual TextEditor::BaseHoverHandler *createHoverHandler() = 0; virtual BaseEditorDocumentProcessor *createEditorDocumentProcessor( TextEditor::TextDocument *baseTextDocument) = 0; virtual FollowSymbolInterface &followSymbolInterface() = 0; diff --git a/src/plugins/cpptools/cppmodelmanagersupportinternal.cpp b/src/plugins/cpptools/cppmodelmanagersupportinternal.cpp index 2dfc34dbab..5191995554 100644 --- a/src/plugins/cpptools/cppmodelmanagersupportinternal.cpp +++ b/src/plugins/cpptools/cppmodelmanagersupportinternal.cpp @@ -26,6 +26,7 @@ #include "cppcompletionassist.h" #include "cppmodelmanagersupportinternal.h" #include "cppfollowsymbolundercursor.h" +#include "cpphoverhandler.h" #include "cpprefactoringengine.h" #include "builtineditordocumentprocessor.h" @@ -74,6 +75,11 @@ CppCompletionAssistProvider *ModelManagerSupportInternal::completionAssistProvid return m_completionAssistProvider.data(); } +TextEditor::BaseHoverHandler *ModelManagerSupportInternal::createHoverHandler() +{ + return new CppHoverHandler; +} + FollowSymbolInterface &ModelManagerSupportInternal::followSymbolInterface() { return *m_followSymbol; diff --git a/src/plugins/cpptools/cppmodelmanagersupportinternal.h b/src/plugins/cpptools/cppmodelmanagersupportinternal.h index 70b56f4351..e2954792ea 100644 --- a/src/plugins/cpptools/cppmodelmanagersupportinternal.h +++ b/src/plugins/cpptools/cppmodelmanagersupportinternal.h @@ -41,6 +41,7 @@ public: virtual ~ModelManagerSupportInternal(); CppCompletionAssistProvider *completionAssistProvider() final; + TextEditor::BaseHoverHandler *createHoverHandler() final; BaseEditorDocumentProcessor *createEditorDocumentProcessor( TextEditor::TextDocument *baseTextDocument) final; FollowSymbolInterface &followSymbolInterface() final; diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro index 4dfc0ceece..e16e3ec0bc 100644 --- a/src/plugins/cpptools/cpptools.pro +++ b/src/plugins/cpptools/cpptools.pro @@ -32,11 +32,13 @@ HEADERS += \ cppdoxygen.h \ cppeditoroutline.h \ cppeditorwidgetinterface.h \ + cppelementevaluator.h \ cppfileiterationorder.h \ cppfilesettingspage.h \ cppfindreferences.h \ cppfollowsymbolundercursor.h \ cppfunctionsfilter.h \ + cpphoverhandler.h \ cppincludesfilter.h \ cppindexingsupport.h \ cpplocalsymbols.h \ @@ -125,11 +127,13 @@ SOURCES += \ cppcurrentdocumentfilter.cpp \ cppeditoroutline.cpp \ cppdoxygen.cpp \ + cppelementevaluator.cpp \ cppfileiterationorder.cpp \ cppfilesettingspage.cpp \ cppfindreferences.cpp \ cppfollowsymbolundercursor.cpp \ cppfunctionsfilter.cpp \ + cpphoverhandler.cpp \ cppincludesfilter.cpp \ cppindexingsupport.cpp \ cpplocalsymbols.cpp \ diff --git a/src/plugins/cpptools/cpptools.qbs b/src/plugins/cpptools/cpptools.qbs index a510f5a21d..a258ce18a3 100644 --- a/src/plugins/cpptools/cpptools.qbs +++ b/src/plugins/cpptools/cpptools.qbs @@ -90,6 +90,8 @@ Project { "cppeditoroutline.cpp", "cppeditoroutline.h", "cppeditorwidgetinterface.h", + "cppelementevaluator.cpp", + "cppelementevaluator.h", "cppfileiterationorder.cpp", "cppfileiterationorder.h", "cppfilesettingspage.cpp", @@ -101,6 +103,8 @@ Project { "cppfollowsymbolundercursor.h", "cppfunctionsfilter.cpp", "cppfunctionsfilter.h", + "cpphoverhandler.cpp", + "cpphoverhandler.h", "cppincludesfilter.cpp", "cppincludesfilter.h", "cppindexingsupport.cpp", |