From 2f4ac127c3a0948fae9b22226e235b867908b6c3 Mon Sep 17 00:00:00 2001 From: Timo Eskola Date: Tue, 28 Aug 2018 11:08:42 +0300 Subject: Fixed current item selection after deletion. --- menu.c | 32 +++++++++++++++++++------------- menu.h | 1 + 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/menu.c b/menu.c index 137d123..076a757 100644 --- a/menu.c +++ b/menu.c @@ -339,18 +339,7 @@ void cMenuDuplicates::Set(bool Refresh) { if (Count() == 0) Add(SeparatorItem(cString::sprintf(tr("%d duplicate recordings"), 0))); if (Refresh) { - if (currentIndex >= 0) { - if(currentIndex >= Count()) - currentIndex = Count() - 1; - cOsdItem *current = Get(currentIndex); - while (current) { - if (current->Selectable()) { - SetCurrent(current); - break; - } - current = Prev(current); - } - } + SetCurrentIndex(currentIndex); Display(); } gettimeofday(&stopTime, NULL); @@ -437,6 +426,21 @@ static bool TimerStillRecording(const char *FileName) { return false; } +void cMenuDuplicates::SetCurrentIndex(int index) { + if (index >= 0) { + if (index >= Count()) + index = Count() - 1; + cOsdItem *current = Get(index); + while (current) { + if (current->Selectable()) { + SetCurrent(current); + break; + } + current = Prev(current); + } + } +} + eOSState cMenuDuplicates::Delete(void) { if (HasSubMenu() || Count() == 0) return osContinue; @@ -490,7 +494,8 @@ eOSState cMenuDuplicates::Delete(void) { Recordings->SetModified(); recordingsStateKey.Remove(); #endif - cOsdMenu::Del(Current()); + int currentIndex = Current(); + cOsdMenu::Del(currentIndex); // remove items that have less than 2 duplicates int d = 0; for (int i = Count() - 1; i >= 0; i--) { @@ -504,6 +509,7 @@ eOSState cMenuDuplicates::Delete(void) { } else d++; } + SetCurrentIndex(currentIndex); SetHelpKeys(); Display(); } else diff --git a/menu.h b/menu.h index 2e9b9fb..c935a6f 100644 --- a/menu.h +++ b/menu.h @@ -37,6 +37,7 @@ private: int helpKeys; void SetHelpKeys(void); void Set(bool Refresh = false); + void SetCurrentIndex(int index); eOSState Play(void); eOSState Setup(void); eOSState Delete(void); -- cgit v1.2.3