summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/UserSettingsPage.cpp2
-rw-r--r--src/timeline/RoomlistModel.cpp17
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();