diff options
| author | Peter Penz <[email protected]> | 2012-03-20 23:28:39 +0100 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-03-20 23:35:43 +0100 |
| commit | d3a2f1ba82de87dbc0f762263e4509d2d73f7fd0 (patch) | |
| tree | e4148bb58441167701844d5ac473d7a1baac2e18 /src/kitemviews | |
| parent | 4815fbd00bfcaaa8daaae447c1f61d1acfd68de0 (diff) | |
Fix sorting-issue when "Sort folders first" is disabled
The comparison of expanded trees may not assume that directories
are always sorted first and must respect the "Sort folders first"
setting.
The sorting-unittest has been extended by a sub-tree and the usecase
of bug 296437. The already deactivated test for
KFileItemModel::expandedParentsCountCompare() has been completely removed
as it has been replaced by testSorting().
BUG: 296437
FIXED-IN: 4.8.2
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kfileitemmodel.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index 4b9f2f00e..49c40eda1 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -1564,10 +1564,12 @@ int KFileItemModel::expandedParentsCountCompare(const ItemData* a, const ItemDat bool isDirB = true; const QString subPathB = subPath(b->item, pathB, index, &isDirB); - if (isDirA && !isDirB) { - return (sortOrder() == Qt::AscendingOrder) ? -1 : +1; - } else if (!isDirA && isDirB) { - return (sortOrder() == Qt::AscendingOrder) ? +1 : -1; + if (m_sortFoldersFirst || m_sortRole == SizeRole) { + if (isDirA && !isDirB) { + return (sortOrder() == Qt::AscendingOrder) ? -1 : +1; + } else if (!isDirA && isDirB) { + return (sortOrder() == Qt::AscendingOrder) ? +1 : -1; + } } // Compare the items of the parents that represent the first |
