diff --git a/src/plugins/classview/classviewmanager.cpp b/src/plugins/classview/classviewmanager.cpp index ad2f75cf697..522b039a5bd 100644 --- a/src/plugins/classview/classviewmanager.cpp +++ b/src/plugins/classview/classviewmanager.cpp @@ -404,4 +404,9 @@ void Manager::setFlatMode(bool flat) }, Qt::QueuedConnection); } +void setupClassViewManager(QObject *guard) +{ + (void) new Manager(guard); +} + } // ClassView::Internal diff --git a/src/plugins/classview/classviewmanager.h b/src/plugins/classview/classviewmanager.h index 68a76e94556..a9bebc7a342 100644 --- a/src/plugins/classview/classviewmanager.h +++ b/src/plugins/classview/classviewmanager.h @@ -13,12 +13,13 @@ namespace ClassView::Internal { class ManagerPrivate; -class Manager : public QObject +class Manager final : public QObject { Q_OBJECT public: - explicit Manager(QObject *parent = nullptr); - ~Manager() override; + explicit Manager(QObject *parent); + ~Manager() final; + static Manager *instance(); bool canFetchMore(QStandardItem *item, bool skipRoot = false) const; @@ -42,4 +43,6 @@ private: ManagerPrivate *d; }; +void setupClassViewManager(QObject *guard); + } // ClassView::Internal diff --git a/src/plugins/classview/classviewplugin.cpp b/src/plugins/classview/classviewplugin.cpp index 24b4cdea62e..d137d606b21 100644 --- a/src/plugins/classview/classviewplugin.cpp +++ b/src/plugins/classview/classviewplugin.cpp @@ -19,24 +19,12 @@ namespace Internal { projects in the sidebar. */ -class ClassViewPluginPrivate -{ -public: - Manager manager; -}; - -static ClassViewPluginPrivate *dd = nullptr; - -ClassViewPlugin::~ClassViewPlugin() -{ - delete dd; - dd = nullptr; -} +ClassViewPlugin::~ClassViewPlugin() = default; void ClassViewPlugin::initialize() { setupClassViewNavigationWidgetFactory(); - dd = new ClassViewPluginPrivate; + setupClassViewManager(this); } } // namespace Internal