parent
80905785ca
commit
a6a9a90234
@ -0,0 +1,74 @@
|
|||||||
|
From 42a3d8accd4e494d343954ddaa916a6c618d94f3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marco Martin <notmart@gmail.com>
|
||||||
|
Date: Wed, 3 Feb 2016 15:36:31 +0100
|
||||||
|
Subject: [PATCH] reset the model on list always shown/hide change
|
||||||
|
|
||||||
|
something really wrong is going on on the proxymodel updates
|
||||||
|
the wrong item gets removed from the list.
|
||||||
|
it may be a wrong mapping between source and dest model
|
||||||
|
(doesn't seem so)
|
||||||
|
or may have been some misguided attempt by QML to recycle delegates
|
||||||
|
|
||||||
|
anyways resetting the model in some conditions even if expensive
|
||||||
|
seems to be the only way to workaround this.
|
||||||
|
Anyways this systray implementation is beyond any repair and
|
||||||
|
the rewritten version won't have to rely on so many models
|
||||||
|
and proxymodels
|
||||||
|
|
||||||
|
BUG:357627
|
||||||
|
CCBUG:352055
|
||||||
|
---
|
||||||
|
applets/systemtray/plugin/tasksproxymodel.cpp | 13 ++++++++++---
|
||||||
|
applets/systemtray/plugin/tasksproxymodel.h | 5 ++++-
|
||||||
|
2 files changed, 14 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/applets/systemtray/plugin/tasksproxymodel.cpp b/applets/systemtray/plugin/tasksproxymodel.cpp
|
||||||
|
index 632e84b..b93b05e 100644
|
||||||
|
--- a/applets/systemtray/plugin/tasksproxymodel.cpp
|
||||||
|
+++ b/applets/systemtray/plugin/tasksproxymodel.cpp
|
||||||
|
@@ -50,9 +50,9 @@ void TasksProxyModel::setHost(Host *host)
|
||||||
|
|
||||||
|
connect(m_host, &Host::taskStatusChanged, this, &TasksProxyModel::invalidateFilter);
|
||||||
|
connect(m_host, &Host::shownCategoriesChanged, this, &TasksProxyModel::invalidateFilter);
|
||||||
|
- connect(m_host, &Host::showAllItemsChanged, this, &TasksProxyModel::invalidateFilter);
|
||||||
|
- connect(m_host, &Host::forcedHiddenItemsChanged, this, &TasksProxyModel::invalidateFilter);
|
||||||
|
- connect(m_host, &Host::forcedShownItemsChanged, this, &TasksProxyModel::invalidateFilter);
|
||||||
|
+ connect(m_host, &Host::showAllItemsChanged, this, &TasksProxyModel::reset);
|
||||||
|
+ connect(m_host, &Host::forcedHiddenItemsChanged, this, &TasksProxyModel::reset);
|
||||||
|
+ connect(m_host, &Host::forcedShownItemsChanged, this, &TasksProxyModel::reset);
|
||||||
|
}
|
||||||
|
|
||||||
|
invalidateFilter();
|
||||||
|
@@ -74,6 +74,13 @@ void TasksProxyModel::setCategory(Category category)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+void TasksProxyModel::reset()
|
||||||
|
+{
|
||||||
|
+ beginResetModel();
|
||||||
|
+ invalidateFilter();
|
||||||
|
+ endResetModel();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool TasksProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
||||||
|
{
|
||||||
|
Q_UNUSED(sourceParent);
|
||||||
|
diff --git a/applets/systemtray/plugin/tasksproxymodel.h b/applets/systemtray/plugin/tasksproxymodel.h
|
||||||
|
index 70e723a..5799d62 100644
|
||||||
|
--- a/applets/systemtray/plugin/tasksproxymodel.h
|
||||||
|
+++ b/applets/systemtray/plugin/tasksproxymodel.h
|
||||||
|
@@ -56,7 +56,10 @@ public:
|
||||||
|
|
||||||
|
virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
|
||||||
|
|
||||||
|
-signals:
|
||||||
|
+private Q_SLOTS:
|
||||||
|
+ void reset();
|
||||||
|
+
|
||||||
|
+Q_SIGNALS:
|
||||||
|
void hostChanged();
|
||||||
|
void categoryChanged();
|
||||||
|
void countChanged();
|
||||||
|
--
|
||||||
|
2.5.0
|
||||||
|
|
Loading…
Reference in new issue