diff --git a/Vocaluxe/Menu/CPlaylist.cs b/Vocaluxe/Menu/CPlaylist.cs index 9d3fd36a..f5a664ed 100644 --- a/Vocaluxe/Menu/CPlaylist.cs +++ b/Vocaluxe/Menu/CPlaylist.cs @@ -85,7 +85,7 @@ namespace Vocaluxe.Menu set { _Selected = value; - if (CurrentPlaylistElement == -1 && _Selected) + if (CurrentPlaylistElement == -1 && _Selected && PlaylistElementContents.Count > 0) { CurrentPlaylistElement = 0; ActiveHover = CurrentPlaylistElement; @@ -336,7 +336,7 @@ namespace Vocaluxe.Menu switch (kevent.Key) { case Keys.Up: - if (CurrentPlaylistElement == -1) + if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0) { CurrentPlaylistElement = 0; ActiveHover = CurrentPlaylistElement; @@ -362,7 +362,7 @@ namespace Vocaluxe.Menu return false; case Keys.Down: - if (CurrentPlaylistElement == -1) + if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0) { CurrentPlaylistElement = 0; ActiveHover = CurrentPlaylistElement; @@ -398,6 +398,14 @@ namespace Vocaluxe.Menu } return false; + case Keys.Back: + ClosePlaylist(); + break; + + case Keys.Enter: + StartPlaylistSongs(); + break; + case Keys.PageUp: if (CurrentPlaylistElement != -1) { @@ -634,6 +642,11 @@ namespace Vocaluxe.Menu PlaylistElementContents.Add(pec); } Update(); + if (PlaylistElementContents.Count - 1 < ActiveHover || PlaylistElementContents.Count - 1 < CurrentPlaylistElement) + { + ActiveHover = PlaylistElementContents.Count - 1; + CurrentPlaylistElement = PlaylistElementContents.Count - 1; + } } private void StartPlaylistSongs() diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs index 83988d94..33e66de9 100644 --- a/Vocaluxe/Screens/CScreenSong.cs +++ b/Vocaluxe/Screens/CScreenSong.cs @@ -642,6 +642,9 @@ namespace Vocaluxe.Screens private void ClosePlaylist() { SongMenus[htSongMenus(SongMenu)].SetSmallView(false); + _PlaylistActive = false; + Playlists[htPlaylists(Playlist)].Selected = _PlaylistActive; + SongMenus[htSongMenus(SongMenu)].SetActive(!_PlaylistActive); } private void UpdatePlaylistNames()