diff --git a/application/groupview/GroupView.cpp b/application/groupview/GroupView.cpp index 6178db0b..74908f88 100644 --- a/application/groupview/GroupView.cpp +++ b/application/groupview/GroupView.cpp @@ -104,37 +104,9 @@ inline bool operator<(const LocaleString &lhs, const LocaleString &rhs) return (QString::localeAwareCompare(lhs, rhs) < 0); } -void GroupView::updateGeometries() +void GroupView::updateScrollbar() { - geometryCache.clear(); int previousScroll = verticalScrollBar()->value(); - - QMap cats; - - for (int i = 0; i < model()->rowCount(); ++i) - { - const QString groupName = model()->index(i, 0).data(GroupViewRoles::GroupRole).toString(); - if (!cats.contains(groupName)) - { - VisualGroup *old = this->category(groupName); - if (old) - { - auto cat = new VisualGroup(old); - cats.insert(groupName, cat); - cat->update(); - } - else - { - auto cat = new VisualGroup(groupName, this); - cats.insert(groupName, cat); - cat->update(); - } - } - } - - qDeleteAll(m_groups); - m_groups = cats.values(); - if (m_groups.isEmpty()) { verticalScrollBar()->setRange(0, 0); @@ -167,7 +139,38 @@ void GroupView::updateGeometries() } verticalScrollBar()->setValue(qMin(previousScroll, verticalScrollBar()->maximum())); +} +void GroupView::updateGeometries() +{ + geometryCache.clear(); + + QMap cats; + + for (int i = 0; i < model()->rowCount(); ++i) + { + const QString groupName = model()->index(i, 0).data(GroupViewRoles::GroupRole).toString(); + if (!cats.contains(groupName)) + { + VisualGroup *old = this->category(groupName); + if (old) + { + auto cat = new VisualGroup(old); + cats.insert(groupName, cat); + cat->update(); + } + else + { + auto cat = new VisualGroup(groupName, this); + cats.insert(groupName, cat); + cat->update(); + } + } + } + + qDeleteAll(m_groups); + m_groups = cats.values(); + updateScrollbar(); viewport()->update(); } @@ -511,6 +514,10 @@ void GroupView::resizeEvent(QResizeEvent *event) m_currentItemsPerRow = newItemsPerRow; updateGeometries(); } + else + { + updateScrollbar(); + } } void GroupView::dragEnterEvent(QDragEnterEvent *event) diff --git a/application/groupview/GroupView.h b/application/groupview/GroupView.h index a3f8a400..a632c22f 100644 --- a/application/groupview/GroupView.h +++ b/application/groupview/GroupView.h @@ -96,6 +96,8 @@ protected: void startDrag(Qt::DropActions supportedActions) override; + void updateScrollbar(); + private: friend struct VisualGroup; QList m_groups;