From b96e44b362a2f85b802654afbe1fc8d17f289687 Mon Sep 17 00:00:00 2001 From: Mike Bremford Date: Tue, 13 Dec 2022 15:34:57 +0000 Subject: [PATCH] Unlike album, artist and albumartist, title and composer were not used as a fallback when titlesort and composersort were specified but unavailable - this patch fixes that. --- doc/protocol.rst | 5 +++-- src/tag/Fallback.hxx | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/protocol.rst b/doc/protocol.rst index aa2cbb272..6cdf8bb91 100644 --- a/doc/protocol.rst +++ b/doc/protocol.rst @@ -796,8 +796,9 @@ Whenever possible, ids should be used. ``sort`` sorts the result by the specified tag. The sort is descending if the tag is prefixed with a minus ('-'). Only the first tag value will be used, if multiple of the same type exist. - To sort by "Artist", "Album" or "AlbumArtist", you should specify - "ArtistSort", "AlbumSort" or "AlbumArtistSort" instead. These + To sort by "Title", "Artist", "Album", "AlbumArtist" or "Composer", + you should specify "TitleSort", "ArtistSort", "AlbumSort", + "AlbumArtistSort" or "ComposerSort" instead. These will automatically fall back to the former if "\*Sort" doesn't exist. "AlbumArtist" falls back to just "Artist". The type "Last-Modified" can sort by file modification time, and "prio" diff --git a/src/tag/Fallback.hxx b/src/tag/Fallback.hxx index 7cada0608..53f8764d2 100644 --- a/src/tag/Fallback.hxx +++ b/src/tag/Fallback.hxx @@ -49,6 +49,14 @@ ApplyTagFallback(TagType type, F &&f) noexcept /* fall back to "Album" if no "AlbumSort" was found */ return f(TAG_ALBUM); + if (type == TAG_TITLE_SORT) + /* fall back to "Title" if no "TitleSort" was found */ + return f(TAG_TITLE); + + if (type == TAG_COMPOSERSORT) + /* fall back to "Composer" if no "ComposerSort" was found */ + return f(TAG_COMPOSER); + return false; }