diff --git a/applets/kicker/plugin/recentusagemodel.h b/applets/kicker/plugin/recentusagemodel.h --- a/applets/kicker/plugin/recentusagemodel.h +++ b/applets/kicker/plugin/recentusagemodel.h @@ -30,7 +30,7 @@ Q_OBJECT public: - explicit GroupSortProxy(QAbstractItemModel *sourceModel); + explicit GroupSortProxy(AbstractModel *parentModel, QAbstractItemModel *sourceModel); ~GroupSortProxy(); protected: diff --git a/applets/kicker/plugin/recentusagemodel.cpp b/applets/kicker/plugin/recentusagemodel.cpp --- a/applets/kicker/plugin/recentusagemodel.cpp +++ b/applets/kicker/plugin/recentusagemodel.cpp @@ -47,7 +47,7 @@ using namespace KAStats; using namespace KAStats::Terms; -GroupSortProxy::GroupSortProxy(QAbstractItemModel *sourceModel) : QSortFilterProxyModel(sourceModel) +GroupSortProxy::GroupSortProxy(AbstractModel *parentModel, QAbstractItemModel *sourceModel) : QSortFilterProxyModel(parentModel) { sourceModel->setParent(this); setSourceModel(sourceModel); @@ -58,7 +58,7 @@ { } -InvalidAppsFilterProxy::InvalidAppsFilterProxy(AbstractModel *parentModel, QAbstractItemModel *sourceModel) : QSortFilterProxyModel(sourceModel) +InvalidAppsFilterProxy::InvalidAppsFilterProxy(AbstractModel *parentModel, QAbstractItemModel *sourceModel) : QSortFilterProxyModel(parentModel) , m_parentModel(parentModel) { connect(parentModel, &AbstractModel::favoritesModelChanged, this, &InvalidAppsFilterProxy::connectNewFavoritesModel); @@ -419,8 +419,10 @@ return; } + QAbstractItemModel *oldModel = sourceModel(); + disconnectSignals(); setSourceModel(nullptr); - delete m_activitiesModel; + delete oldModel; auto query = UsedResources | (m_ordering == Recent ? RecentlyUsedFirst : HighScoredFirst) @@ -460,7 +462,7 @@ } if (m_usage == AppsAndDocs) { - model = new GroupSortProxy(model); + model = new GroupSortProxy(this, model); } setSourceModel(model);