diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index 9c06a898e..5f47de95d 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -840,12 +840,16 @@ PlayableModel::onPlaybackStopped() void -PlayableModel::ensureResolved() +PlayableModel::ensureResolved( const QModelIndex& parent ) { QList< query_ptr > ql; - for ( int i = 0; i < rowCount( QModelIndex() ); i++ ) + for ( int i = 0; i < rowCount( parent ); i++ ) { - query_ptr query = itemFromIndex( index( i, 0, QModelIndex() ) )->query(); + const QModelIndex idx = index( i, 0, parent ); + if ( hasChildren( idx ) ) + ensureResolved( idx ); + + query_ptr query = itemFromIndex( idx )->query(); if ( !query ) continue; diff --git a/src/libtomahawk/playlist/PlayableModel.h b/src/libtomahawk/playlist/PlayableModel.h index 43a3550ef..446e9a124 100644 --- a/src/libtomahawk/playlist/PlayableModel.h +++ b/src/libtomahawk/playlist/PlayableModel.h @@ -119,7 +119,7 @@ public: virtual Tomahawk::PlaylistModes::RepeatMode repeatMode() const; virtual bool shuffled() const { return false; } - virtual void ensureResolved(); + virtual void ensureResolved( const QModelIndex& parent = QModelIndex() ); virtual PlayableItem* itemFromIndex( const QModelIndex& index ) const; virtual PlayableItem* itemFromQuery( const Tomahawk::query_ptr& query ) const;