summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2018-01-28 02:04:47 +0100
committerPetr Mrázek <peterix@gmail.com>2018-01-28 02:04:47 +0100
commit0bcb24502e07e69fe201d7f122bc9f9d3b69ee07 (patch)
tree86c0b8a66bee2c539b1a2a8f47c14b9644462a78 /application
parent3277b820a7ba04560ce846c835378962e9052573 (diff)
downloadMultiMC-0bcb24502e07e69fe201d7f122bc9f9d3b69ee07.tar
MultiMC-0bcb24502e07e69fe201d7f122bc9f9d3b69ee07.tar.gz
MultiMC-0bcb24502e07e69fe201d7f122bc9f9d3b69ee07.tar.lz
MultiMC-0bcb24502e07e69fe201d7f122bc9f9d3b69ee07.tar.xz
MultiMC-0bcb24502e07e69fe201d7f122bc9f9d3b69ee07.zip
GH-2119 Update group view scrollbar when the size of rows doesn't change
Previously, it would only update when you resize the window horizontally enough to change the number of icons that fit in a row.
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;