From c8f955e3020689eef258fb55dd4642b0f72e8c0d Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Mon, 6 Feb 2017 18:28:49 +0200 Subject: [PATCH] Fix previous commit. --- src/gui/transferlistsortmodel.cpp | 18 ++++++++---------- src/gui/transferlistsortmodel.h | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/gui/transferlistsortmodel.cpp b/src/gui/transferlistsortmodel.cpp index 6cd2f670a..0396de12e 100644 --- a/src/gui/transferlistsortmodel.cpp +++ b/src/gui/transferlistsortmodel.cpp @@ -86,7 +86,7 @@ bool TransferListSortModel::lessThan(const QModelIndex &left, const QModelIndex case TorrentModel::TR_ADD_DATE: case TorrentModel::TR_SEED_DATE: case TorrentModel::TR_SEEN_COMPLETE_DATE: { - return dateLessThan(column, left, right); + return dateLessThan(sortColumn(), left, right, true); } case TorrentModel::TR_PRIORITY: { @@ -138,12 +138,10 @@ bool TransferListSortModel::lessThan(const QModelIndex &left, const QModelIndex } if (invalidL && invalidR) { - if (seedingL) { //Both seeding - return dateLessThan(TorrentModelItem::TR_SEED_DATE, left, right); - } - else { + if (seedingL) //Both seeding + return dateLessThan(TorrentModel::TR_SEED_DATE, left, right, true); + else return prioL < prioR; - } } else if (!invalidL && !invalidR) { return etaL < etaR; @@ -196,13 +194,13 @@ bool TransferListSortModel::lowerPositionThan(const QModelIndex &left, const QMo } // Sort according to TR_SEED_DATE - return dateLessThan(TorrentModelItem::TR_SEED_DATE, left, right); + return dateLessThan(TorrentModel::TR_SEED_DATE, left, right, false); } // Every time we compare QDateTimes we need a fallback comparison in case both // values are empty. This is a workaround for unstable sort in QSortFilterProxyModel // (detailed discussion in #2526 and #2158). -bool TransferListSortModel::dateLessThan(const int dateColumn, const QModelIndex &left, const QModelIndex &right) const +bool TransferListSortModel::dateLessThan(const int dateColumn, const QModelIndex &left, const QModelIndex &right, bool sortInvalidInBottom) const { const TorrentModel *model = dynamic_cast(sourceModel()); const QDateTime dateL = model->data(model->index(left.row(), dateColumn)).toDateTime(); @@ -212,9 +210,9 @@ bool TransferListSortModel::dateLessThan(const int dateColumn, const QModelIndex return dateL < dateR; } else if (dateL.isValid()) - return false; + return sortInvalidInBottom; else if (dateR.isValid()) - return true; + return !sortInvalidInBottom; // Finally, sort by hash const QString hashL(model->torrentHandle(model->index(left.row()))->hash()); diff --git a/src/gui/transferlistsortmodel.h b/src/gui/transferlistsortmodel.h index 3877a655a..fb2fea88c 100644 --- a/src/gui/transferlistsortmodel.h +++ b/src/gui/transferlistsortmodel.h @@ -52,7 +52,7 @@ public: private: bool lessThan(const QModelIndex &left, const QModelIndex &right) const; bool lowerPositionThan(const QModelIndex &left, const QModelIndex &right) const; - bool dateLessThan(const int dateColumn, const QModelIndex &left, const QModelIndex &right) const; + bool dateLessThan(const int dateColumn, const QModelIndex &left, const QModelIndex &right, bool sortInvalidInBottom) const; bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; bool matchFilter(int sourceRow, const QModelIndex &sourceParent) const;