diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp index 8c736a45396..e34d50c8b85 100644 --- a/src/plugins/texteditor/outlinefactory.cpp +++ b/src/plugins/texteditor/outlinefactory.cpp @@ -7,14 +7,15 @@ #include "ioutlinewidget.h" #include -#include #include #include +#include +#include -#include #include #include #include +#include #include #include @@ -25,9 +26,37 @@ using namespace Utils; namespace TextEditor { +namespace Internal { + +class OutlineFactory : public Core::INavigationWidgetFactory +{ + Q_OBJECT + +public: + OutlineFactory(); + + Core::NavigationView createWidget() override; + void saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override; + void restoreSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override; + +signals: + void updateOutline(); +}; + +OutlineFactory &outlineFactory() +{ + static OutlineFactory theOutlineFactory; + return theOutlineFactory; +} + +void setupOutlineFactory() +{ + (void) outlineFactory(); +} + +} // Internal static QList g_outlineWidgetFactories; -static QPointer g_outlineFactory; IOutlineWidgetFactory::IOutlineWidgetFactory() { @@ -41,8 +70,7 @@ IOutlineWidgetFactory::~IOutlineWidgetFactory() void IOutlineWidgetFactory::updateOutline() { - if (QTC_GUARD(!g_outlineFactory.isNull())) - emit g_outlineFactory->updateOutline(); + emit Internal::outlineFactory().updateOutline(); } namespace Internal { @@ -243,8 +271,6 @@ void OutlineWidgetStack::updateEditor(Core::IEditor *editor) OutlineFactory::OutlineFactory() { - QTC_CHECK(g_outlineFactory.isNull()); - g_outlineFactory = this; setDisplayName(Tr::tr("Outline")); setId("Outline"); setPriority(600); diff --git a/src/plugins/texteditor/outlinefactory.h b/src/plugins/texteditor/outlinefactory.h index eae3efb7fcc..71357de8293 100644 --- a/src/plugins/texteditor/outlinefactory.h +++ b/src/plugins/texteditor/outlinefactory.h @@ -3,24 +3,8 @@ #pragma once -#include - namespace TextEditor::Internal { -class OutlineFactory : public Core::INavigationWidgetFactory -{ - Q_OBJECT - -public: - OutlineFactory(); - - // from INavigationWidgetFactory - Core::NavigationView createWidget() override; - void saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override; - void restoreSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override; - -signals: - void updateOutline(); -}; +void setupOutlineFactory(); } // TextEditor::Internal diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index f30dac41180..875d9f6e9ea 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -101,7 +101,6 @@ public: TextEditorSettings settings; LineNumberFilter lineNumberFilter; // Goto line functionality for quick open - OutlineFactory outlineFactory; FindInFiles findInFilesFilter; FindInCurrentFile findInCurrentFileFilter; @@ -284,6 +283,8 @@ TextEditorPlugin *TextEditorPlugin::instance() void TextEditorPlugin::initialize() { + setupOutlineFactory(); + d = new TextEditorPluginPrivate; Context context(TextEditor::Constants::C_TEXTEDITOR);