From 35a7acd606d5b4d1ab7b7c572ff92a81a819b00a Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 17 Aug 2011 03:33:31 +0200 Subject: [PATCH] * Fixed sorting of identical items in Tree- & TrackProxyModel. --- src/libtomahawk/playlist/trackproxymodel.cpp | 9 +++++++-- src/libtomahawk/playlist/treeproxymodel.cpp | 8 +++++++- src/sourcetree/sourcesproxymodel.cpp | 1 - 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/playlist/trackproxymodel.cpp b/src/libtomahawk/playlist/trackproxymodel.cpp index 341e733fd..cf1c5bd94 100644 --- a/src/libtomahawk/playlist/trackproxymodel.cpp +++ b/src/libtomahawk/playlist/trackproxymodel.cpp @@ -396,6 +396,11 @@ TrackProxyModel::lessThan( const QModelIndex& left, const QModelIndex& right ) c return size1 < size2; } - return QString::localeAwareCompare( sourceModel()->data( left ).toString(), - sourceModel()->data( right ).toString() ) < 0; + + const QString& lefts = sourceModel()->data( left ).toString(); + const QString& rights = sourceModel()->data( right ).toString(); + if ( lefts == rights ) + return id1 < id2; + + return QString::localeAwareCompare( lefts, rights ) < 0; } diff --git a/src/libtomahawk/playlist/treeproxymodel.cpp b/src/libtomahawk/playlist/treeproxymodel.cpp index be14bab36..a19f39af2 100644 --- a/src/libtomahawk/playlist/treeproxymodel.cpp +++ b/src/libtomahawk/playlist/treeproxymodel.cpp @@ -133,13 +133,19 @@ TreeProxyModel::lessThan( const QModelIndex& left, const QModelIndex& right ) co if ( !p2 ) return false; + const QString& lefts = textForItem( p1 ); + const QString& rights = textForItem( p2 ); + if ( !p1->result().isNull() ) { if ( p1->result()->albumpos() != p2->result()->albumpos() ) return p1->result()->albumpos() < p2->result()->albumpos(); + + if ( lefts == rights ) + return p1->result()->dbid() < p2->result()->dbid(); } - return QString::localeAwareCompare( textForItem( p1 ), textForItem( p2 ) ) < 0; + return QString::localeAwareCompare( lefts, rights ) < 0; } diff --git a/src/sourcetree/sourcesproxymodel.cpp b/src/sourcetree/sourcesproxymodel.cpp index 48f9423d3..66a3e85be 100644 --- a/src/sourcetree/sourcesproxymodel.cpp +++ b/src/sourcetree/sourcesproxymodel.cpp @@ -37,7 +37,6 @@ SourcesProxyModel::SourcesProxyModel( SourcesModel* model, QObject* parent ) setSourceModel( model ); - if ( model && model->metaObject()->indexOfSignal( "expandRequest(QModelIndex)" ) > -1 ) connect( model, SIGNAL( expandRequest( QModelIndex ) ), this, SLOT( expandRequested( QModelIndex ) ) ); if ( model && model->metaObject()->indexOfSignal( "selectRequest(QModelIndex)" ) > -1 )