diff --git a/containments/homescreens/halcyon/plugin/halcyonplugin.cpp b/containments/homescreens/halcyon/plugin/halcyonplugin.cpp index 409af31f..85402309 100644 --- a/containments/homescreens/halcyon/plugin/halcyonplugin.cpp +++ b/containments/homescreens/halcyon/plugin/halcyonplugin.cpp @@ -18,9 +18,8 @@ void HalcyonPlugin::registerTypes(const char *uri) return ApplicationListModel::self(); }); - PinnedModel *pinnedModel = new PinnedModel{this}; - qmlRegisterSingletonType(uri, 1, 0, "PinnedModel", [pinnedModel](QQmlEngine *, QJSEngine *) -> QObject * { - return pinnedModel; + qmlRegisterSingletonType(uri, 1, 0, "PinnedModel", [](QQmlEngine *, QJSEngine *) -> QObject * { + return PinnedModel::self(); }); qmlRegisterType(uri, 1, 0, "Application"); diff --git a/containments/homescreens/halcyon/plugin/pinnedmodel.cpp b/containments/homescreens/halcyon/plugin/pinnedmodel.cpp index 3aa7094d..8a71b8d5 100644 --- a/containments/homescreens/halcyon/plugin/pinnedmodel.cpp +++ b/containments/homescreens/halcyon/plugin/pinnedmodel.cpp @@ -15,6 +15,12 @@ PinnedModel::PinnedModel(QObject *parent) PinnedModel::~PinnedModel() = default; +PinnedModel *PinnedModel::self() +{ + static PinnedModel *inst = new PinnedModel(); + return inst; +} + int PinnedModel::rowCount(const QModelIndex &parent) const { return m_applications.count(); diff --git a/containments/homescreens/halcyon/plugin/pinnedmodel.h b/containments/homescreens/halcyon/plugin/pinnedmodel.h index 628f6f42..a7339b77 100644 --- a/containments/homescreens/halcyon/plugin/pinnedmodel.h +++ b/containments/homescreens/halcyon/plugin/pinnedmodel.h @@ -32,6 +32,7 @@ public: PinnedModel(QObject *parent = nullptr); ~PinnedModel() override; + static PinnedModel *self(); int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;