2 files changed, 9 insertions, 10 deletions
diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp
index e4af4b56..dd4270a8 100644
--- a/src/UserSettingsPage.cpp
+++ b/src/UserSettingsPage.cpp
@@ -1023,7 +1023,7 @@ UserSettingsModel::data(const QModelIndex &index, int role) const
case SortByImportance:
return tr("Sort rooms by unreads");
case SortByAlphabet:
- return tr("Sort rooms by alphabetical order instead of last message time");
+ return tr("Sort rooms alphabetically");
case ButtonsInTimeline:
return tr("Show buttons in timeline");
case TimelineMaxWidth:
diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp
index 0801289c..909a6bf8 100644
--- a/src/timeline/RoomlistModel.cpp
+++ b/src/timeline/RoomlistModel.cpp
@@ -889,20 +889,19 @@ FilteredRoomlistModel::lessThan(const QModelIndex &left, const QModelIndex &righ
// Now sort by recency or room name
// Zero if empty, otherwise the time that the event occured
- if (!this->sortByAlphabet) {
+ if (this->sortByAlphabet) {
+ QString a_order = sourceModel()->data(left_idx, RoomlistModel::RoomName).toString();
+ QString b_order = sourceModel()->data(right_idx, RoomlistModel::RoomName).toString();
+
+ auto comp = a_order.compare(b_order, Qt::CaseInsensitive);
+ if (comp != 0)
+ return comp < 0;
+ } else {
uint64_t a_order = sourceModel()->data(left_idx, RoomlistModel::Timestamp).toULongLong();
uint64_t b_order = sourceModel()->data(right_idx, RoomlistModel::Timestamp).toULongLong();
if (a_order != b_order)
return a_order > b_order;
- } else {
- QString a_order =
- sourceModel()->data(left_idx, RoomlistModel::RoomName).toString().toLower();
- QString b_order =
- sourceModel()->data(right_idx, RoomlistModel::RoomName).toString().toLower();
-
- if (a_order != b_order)
- return a_order < b_order;
}
return left.row() < right.row();
|