diff --git a/src/collection/collectionmodel.cpp b/src/collection/collectionmodel.cpp index a2c4fe972..41b8df869 100644 --- a/src/collection/collectionmodel.cpp +++ b/src/collection/collectionmodel.cpp @@ -781,7 +781,7 @@ void CollectionModel::CreateSongItem(const Song &song, CollectionItem *parent) { void CollectionModel::SetSongItemData(CollectionItem *item, const Song &song) { item->display_text = song.TitleWithCompilationArtist(); - item->sort_text = IsAlbumGroupBy(options_active_.group_by[item->parent->container_level]) ? SortTextForSong(song) : SortText(song.title()); + item->sort_text = HasParentAlbumGroupBy(item->parent) ? SortTextForSong(song) : SortText(song.title()); item->metadata = song; } @@ -1434,6 +1434,19 @@ bool CollectionModel::CompareItems(const CollectionItem *a, const CollectionItem } +bool CollectionModel::HasParentAlbumGroupBy(CollectionItem *item) const { + + while (item && item != root_) { + if (item->container_level >= 0 && item->container_level <= 2 && IsAlbumGroupBy(options_active_.group_by[item->container_level])) { + return true; + } + item = item->parent; + } + + return false; + +} + qint64 CollectionModel::MaximumCacheSize(Settings *s, const char *size_id, const char *size_unit_id, const qint64 cache_size_default) { qint64 size = s->value(size_id, cache_size_default).toInt(); diff --git a/src/collection/collectionmodel.h b/src/collection/collectionmodel.h index 378303c62..d9bab5fc1 100644 --- a/src/collection/collectionmodel.h +++ b/src/collection/collectionmodel.h @@ -201,6 +201,8 @@ class CollectionModel : public SimpleTreeModel { bool CompareItems(const CollectionItem *a, const CollectionItem *b) const; + bool HasParentAlbumGroupBy(CollectionItem *item) const; + Q_SIGNALS: void TotalSongCountUpdated(const int count); void TotalArtistCountUpdated(const int count);