[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kfile
From: Peter Penz <peter.penz () gmx ! at>
Date: 2010-05-17 16:05:37
Message-ID: 20100517160537.B20D7AC8B8 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1127780 by ppenz:
If a case insensitive comparison is done and the strings are equal, a case sensitive \
comparison must be done as fallback to have a deterministic sorting order. Otherwise \
it is possible that items "toggle" during hovering.
BUG: 217048
CCBUG: 237621
M +14 -3 kdirsortfilterproxymodel.cpp
--- trunk/KDE/kdelibs/kfile/kdirsortfilterproxymodel.cpp #1127779:1127780
@@ -50,15 +50,26 @@
q, SLOT(slotNaturalSortingChanged()));
}
-inline int KDirSortFilterProxyModel::KDirSortFilterProxyModelPrivate::compare(const \
QString& a, +int KDirSortFilterProxyModel::KDirSortFilterProxyModelPrivate::compare(const \
QString& a,
const \
QString& b,
\
Qt::CaseSensitivity caseSensitivity) const {
- return m_naturalSorting ? KStringHandler::naturalCompare(a, b, caseSensitivity)
- : QString::compare(a, b, caseSensitivity);
+ if (caseSensitivity == Qt::CaseInsensitive) {
+ const int result = m_naturalSorting ? KStringHandler::naturalCompare(a, b, \
Qt::CaseInsensitive) + : \
QString::compare(a, b, Qt::CaseInsensitive); + if (result != 0) {
+ // Only return the result, if the strings are not equal. If they are \
equal by a case insensitive + // comparison, still a deterministic sort \
order is required. A case sensitive + // comparison is done as fallback.
+ return result;
}
+ }
+ return m_naturalSorting ? KStringHandler::naturalCompare(a, b, \
Qt::CaseSensitive) + : QString::compare(a, b, \
Qt::CaseSensitive); +}
+
void KDirSortFilterProxyModel::KDirSortFilterProxyModelPrivate::slotNaturalSortingChanged()
{
m_naturalSorting = KGlobalSettings::naturalSorting();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic