summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
Diffstat (limited to 'application')
-rw-r--r--application/groupview/GroupView.cpp65
-rw-r--r--application/groupview/GroupView.h2
2 files changed, 38 insertions, 29 deletions
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<LocaleString, VisualGroup *> 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<LocaleString, VisualGroup *> 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<VisualGroup *> m_groups;