[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.6/kdelibs/kfile
From:       Sebastian Trueg <sebastian () trueg ! de>
Date:       2011-01-10 13:08:00
Message-ID: 20110110130800.6C7F6AC8B2 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1213465 by trueg:

Backport: Fixed sorting if two items have the same UDS_DISPLAY_NAME.


 M  +10 -1     kdirsortfilterproxymodel.cpp  


--- branches/KDE/4.6/kdelibs/kfile/kdirsortfilterproxymodel.cpp #1213464:1213465
@@ -168,8 +168,17 @@
 
     switch (left.column()) {
     case KDirModel::Name: {
-        return d->compare(leftFileItem.text(), rightFileItem.text(), sortCaseSensitivity()) < 0;
+        // KFileItem::text() may not be unique (in case UDS_DISPLAY_NAME is used). In that case we
+        // fall back to the name which is always unique
+        const int result = d->compare(leftFileItem.text(), rightFileItem.text(), sortCaseSensitivity());
+        if (result == 0) {
+            return d->compare(leftFileItem.name(sortCaseSensitivity() == Qt::CaseInsensitive),
+                              rightFileItem.name(sortCaseSensitivity() == Qt::CaseInsensitive),
+                              sortCaseSensitivity()) < 0;
+        } else {
+            return result < 0;
     }
+    }
 
     case KDirModel::Size: {
         // If we have two folders, what we have to measure is the number of
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic