diff --git a/Vocaluxe/Base/CSongSorter.cs b/Vocaluxe/Base/CSongSorter.cs
index 318ba811..d4b59f13 100644
--- a/Vocaluxe/Base/CSongSorter.cs
+++ b/Vocaluxe/Base/CSongSorter.cs
@@ -111,6 +111,24 @@ namespace Vocaluxe.Base
return res;
}
+ ///
+ /// Compares two songs by means of: first letter of sorting field, sorting field, title.
+ ///
+ private int _SortByLetterFieldTitle(CSongPointer s1, CSongPointer s2)
+ {
+ int res = String.Compare(s1.SortString[0].ToString(), s2.SortString[0].ToString(), StringComparison.CurrentCultureIgnoreCase);
+ return res != 0 ? res : _SortByFieldTitle(s1, s2);
+ }
+
+ ///
+ /// Compares two songs by means of: first letter of sorting field, sorting field, artist, title.
+ ///
+ private int _SortByLetterFieldArtistTitle(CSongPointer s1, CSongPointer s2)
+ {
+ int res = String.Compare(s1.SortString[0].ToString(), s2.SortString[0].ToString(), StringComparison.CurrentCultureIgnoreCase);
+ return res != 0 ? res : _SortByFieldArtistTitle(s1, s2);
+ }
+
private void _AddSongToList(CSong song, List list)
{
string value = null;
@@ -172,11 +190,16 @@ namespace Vocaluxe.Base
_AddSongToList(song, sortList);
switch (_SongSorting)
{
- case ESongSorting.TR_CONFIG_ARTIST_LETTER:
case ESongSorting.TR_CONFIG_ARTIST:
case ESongSorting.TR_CONFIG_NONE:
sortList.Sort(_SortByFieldTitle);
break;
+ case ESongSorting.TR_CONFIG_ARTIST_LETTER:
+ sortList.Sort(_SortByLetterFieldTitle);
+ break;
+ case ESongSorting.TR_CONFIG_TITLE_LETTER:
+ sortList.Sort(_SortByLetterFieldArtistTitle);
+ break;
default:
sortList.Sort(_SortByFieldArtistTitle);
break;