diff options
author | Petr Mrázek <peterix@gmail.com> | 2014-11-10 08:51:24 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2014-11-10 08:51:24 +0100 |
commit | 5711b1be95a826daf0e11b64bec04c4b0d2ea5ef (patch) | |
tree | 8141716398aab297f6e319ec1006d89a391ff87e /gui/groupview | |
parent | 90eea4f05c4fac56d91d7c2d2a36db3873a1af20 (diff) | |
download | MultiMC-5711b1be95a826daf0e11b64bec04c4b0d2ea5ef.tar MultiMC-5711b1be95a826daf0e11b64bec04c4b0d2ea5ef.tar.gz MultiMC-5711b1be95a826daf0e11b64bec04c4b0d2ea5ef.tar.lz MultiMC-5711b1be95a826daf0e11b64bec04c4b0d2ea5ef.tar.xz MultiMC-5711b1be95a826daf0e11b64bec04c4b0d2ea5ef.zip |
'Fix' instance group sorting
Diffstat (limited to 'gui/groupview')
-rw-r--r-- | gui/groupview/GroupView.cpp | 18 | ||||
-rw-r--r-- | gui/groupview/GroupedProxyModel.cpp | 18 |
2 files changed, 34 insertions, 2 deletions
diff --git a/gui/groupview/GroupView.cpp b/gui/groupview/GroupView.cpp index 31d242dd..502cf259 100644 --- a/gui/groupview/GroupView.cpp +++ b/gui/groupview/GroupView.cpp @@ -62,12 +62,28 @@ void GroupView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int e scheduleDelayedItemsLayout(); } +class LocaleString : public QString +{ +public: + LocaleString(const char *s) : QString(s) + { + } + LocaleString(const QString &s) : QString(s) + { + } +}; + +inline bool operator<(const LocaleString &lhs, const LocaleString &rhs) +{ + return (QString::localeAwareCompare(lhs, rhs) < 0); +} + void GroupView::updateGeometries() { geometryCache.clear(); int previousScroll = verticalScrollBar()->value(); - QMap<QString, VisualGroup *> cats; + QMap<LocaleString, VisualGroup *> cats; for (int i = 0; i < model()->rowCount(); ++i) { diff --git a/gui/groupview/GroupedProxyModel.cpp b/gui/groupview/GroupedProxyModel.cpp index d9d6ac78..30845caa 100644 --- a/gui/groupview/GroupedProxyModel.cpp +++ b/gui/groupview/GroupedProxyModel.cpp @@ -1,6 +1,7 @@ #include "GroupedProxyModel.h" #include "GroupView.h" +#include "logger/QsLog.h" GroupedProxyModel::GroupedProxyModel(QObject *parent) : QSortFilterProxyModel(parent) { @@ -16,7 +17,22 @@ bool GroupedProxyModel::lessThan(const QModelIndex &left, const QModelIndex &rig } else { - return leftCategory < rightCategory; + // FIXME: real group sorting happens in GroupView::updateGeometries(), see LocaleString + auto result = leftCategory.localeAwareCompare(rightCategory); + if(result < 0) + { + QLOG_DEBUG() << leftCategory << "<" << rightCategory; + } + if(result == 0) + { + QLOG_DEBUG() << leftCategory << "=" << rightCategory; + return subSortLessThan(left, right); + } + if(result > 0) + { + QLOG_DEBUG() << leftCategory << ">" << rightCategory; + } + return result < 0; } } |