summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gui/groupview/GroupView.cpp12
-rw-r--r--gui/groupview/GroupView.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/gui/groupview/GroupView.cpp b/gui/groupview/GroupView.cpp
index 5f3e3dec..b650efee 100644
--- a/gui/groupview/GroupView.cpp
+++ b/gui/groupview/GroupView.cpp
@@ -45,6 +45,12 @@ GroupView::~GroupView()
m_groups.clear();
}
+void GroupView::setModel(QAbstractItemModel *model)
+{
+ QAbstractItemView::setModel(model);
+ connect(model, &QAbstractItemModel::modelReset, this, &GroupView::modelReset);
+}
+
void GroupView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight,
const QVector<int> &roles)
{
@@ -133,6 +139,12 @@ void GroupView::updateGeometries()
viewport()->update();
}
+void GroupView::modelReset()
+{
+ scheduleDelayedItemsLayout();
+ executeDelayedItemsLayout();
+}
+
bool GroupView::isIndexHidden(const QModelIndex &index) const
{
Group *cat = category(index);
diff --git a/gui/groupview/GroupView.h b/gui/groupview/GroupView.h
index e8f9107c..b3ab5357 100644
--- a/gui/groupview/GroupView.h
+++ b/gui/groupview/GroupView.h
@@ -24,6 +24,8 @@ public:
GroupView(QWidget *parent = 0);
~GroupView();
+ void setModel(QAbstractItemModel *model) override;
+
/// return geometry rectangle occupied by the specified model item
QRect geometryRect(const QModelIndex &index) const;
/// return visual rectangle occupied by the specified model item
@@ -69,6 +71,7 @@ slots:
virtual void rowsInserted(const QModelIndex &parent, int start, int end) override;
virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override;
virtual void updateGeometries() override;
+ void modelReset();
protected:
virtual bool isIndexHidden(const QModelIndex &index) const override;