]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Minor performance improvement. As Dominic Battre pointed out correctly, it is not...
authorPeter Penz <peter.penz19@gmail.com>
Mon, 15 Jan 2007 18:28:19 +0000 (18:28 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Mon, 15 Jan 2007 18:28:19 +0000 (18:28 +0000)
svn path=/trunk/playground/utils/dolphin/; revision=623878

src/dolphinsortfilterproxymodel.cpp

index ad7c98b4de94c282b48a94ad634482eba6ab6544..783a0af42646e6db4d038641a4eec854a04649dc 100644 (file)
@@ -184,16 +184,13 @@ int DolphinSortFilterProxyModel::naturalCompare(const QString& a,
             //
             // The longest run of digits wins. That aside, the greatest
             // value wins, but we can't know that it will until we've scanned
-            // both numbers to know that they have the same magnitude, so we
-            // remember the values in 'valueA' and 'valueB'.
-
-            int valueA = 0;
-            int valueB = 0;
+            // both numbers to know that they have the same magnitude.
 
+            int weight = 0;
             while (1) {
                 if (!currA->isDigit() && !currB->isDigit()) {
-                    if (valueA != valueB) {
-                        return valueA - valueB;
+                    if (weight != 0) {
+                        return weight;
                     }
                     break;
                 }
@@ -203,11 +200,12 @@ int DolphinSortFilterProxyModel::naturalCompare(const QString& a,
                 else if (!currB->isDigit()) {
                     return +1;
                 }
-                else {
-                    valueA = (valueA * 10) + currA->digitValue();
-                    valueB = (valueB * 10) + currB->digitValue();
+                else if ((*currA < *currB) && (weight == 0)) {
+                    weight = -1;
+                }
+                else if ((*currA > *currB) && (weight == 0)) {
+                    weight = +1;
                 }
-
                 ++currA;
                 ++currB;
             }