From 09d36ccf60e35b05140f5d966380993ff9b570f4 Mon Sep 17 00:00:00 2001 From: Flamefire Date: Sat, 9 Aug 2014 15:05:34 +0200 Subject: [PATCH] Fix categories not showing on start --- .../Menu/SongMenu/CSongMenuTileBoard.cs | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs index 00a31e7e..cc675587 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs @@ -57,8 +57,8 @@ namespace VocaluxeLib.Menu.SongMenu private int _Offset; private float _Length = -1f; - private int _LastKnownNumSongs; - private int _LastKnownCategory = -1; + private int _LastKnownElements; + private int _LastKnownCategory; private bool _MouseWasInRect; @@ -263,17 +263,18 @@ namespace VocaluxeLib.Menu.SongMenu public override void OnShow() { - if (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_OFF && CBase.Songs.GetNumCategories() > 0 && !CBase.Songs.IsInCategory()) - _EnterCategory(0); - else + _LastKnownElements = -1; //Force refresh of list + if (!CBase.Songs.IsInCategory()) { - if (CBase.Songs.IsInCategory()) - SetSelectedSong(_SelectionNr < 0 ? 0 : _SelectionNr); - else - SetSelectedCategory(_SelectionNr < 0 ? 0 : _SelectionNr); + if ((CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_OFF && CBase.Songs.GetNumCategories() > 0) || CBase.Songs.GetNumCategories() == 1) + _EnterCategory(0); } + if (CBase.Songs.IsInCategory()) + SetSelectedSong(_SelectionNr < 0 ? 0 : _SelectionNr); + else + SetSelectedCategory(_SelectionNr < 0 ? 0 : _SelectionNr); _PreviewNr = _SelectionNr; - _AfterCategoryChange(); + _UpdateListIfRequired(); } public override bool HandleInput(ref SKeyEvent keyEvent, SScreenSongOptions options) @@ -499,7 +500,7 @@ namespace VocaluxeLib.Menu.SongMenu _PreviewNr = 0; SetSelectedSong(0); - _AfterCategoryChange(); + _UpdateListIfRequired(); } protected override void _LeaveCategory() @@ -508,7 +509,7 @@ namespace VocaluxeLib.Menu.SongMenu _PreviewNr = 0; SetSelectedCategory(0); - _AfterCategoryChange(); + _UpdateListIfRequired(); } private void _NextCategory() @@ -529,13 +530,14 @@ namespace VocaluxeLib.Menu.SongMenu } } - private void _AfterCategoryChange() + private void _UpdateListIfRequired() { - if ((_LastKnownNumSongs == CBase.Songs.GetNumSongsVisible()) && (_LastKnownCategory == CBase.Songs.GetCurrentCategoryIndex())) + int curElements = CBase.Songs.IsInCategory() ? CBase.Songs.GetNumSongsVisible() : CBase.Songs.GetNumCategories(); + if ((_LastKnownElements == curElements) && (_LastKnownCategory == CBase.Songs.GetCurrentCategoryIndex())) return; _LastKnownCategory = CBase.Songs.GetCurrentCategoryIndex(); - _LastKnownNumSongs = CBase.Songs.GetNumSongsVisible(); + _LastKnownElements = curElements; CBase.Songs.UpdateRandomSongList(); _UpdateList(true); }