From 4d2b9fbe1b4fc848aaf62ab07a4cb29dd512fac0 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 3 Mar 2016 10:47:11 +0100 Subject: [PATCH] - don't freeze if the menu item search can't find anything selectable. --- src/menu/listmenu.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/menu/listmenu.cpp b/src/menu/listmenu.cpp index 45b46b623..bcb61d6eb 100644 --- a/src/menu/listmenu.cpp +++ b/src/menu/listmenu.cpp @@ -156,7 +156,9 @@ bool DListMenu::Responder (event_t *ev) bool DListMenu::MenuEvent (int mkey, bool fromcontroller) { + int oldSelect = mDesc->mSelectedItem; int startedAt = mDesc->mSelectedItem; + if (startedAt < 0) startedAt = 0; switch (mkey) { @@ -166,6 +168,7 @@ bool DListMenu::MenuEvent (int mkey, bool fromcontroller) if (--mDesc->mSelectedItem < 0) mDesc->mSelectedItem = mDesc->mItems.Size()-1; } while (!mDesc->mItems[mDesc->mSelectedItem]->Selectable() && mDesc->mSelectedItem != startedAt); + if (mDesc->mSelectedItem == startedAt) mDesc->mSelectedItem = oldSelect; S_Sound (CHAN_VOICE | CHAN_UI, "menu/cursor", snd_menuvolume, ATTN_NONE); return true; @@ -175,6 +178,7 @@ bool DListMenu::MenuEvent (int mkey, bool fromcontroller) if (++mDesc->mSelectedItem >= (int)mDesc->mItems.Size()) mDesc->mSelectedItem = 0; } while (!mDesc->mItems[mDesc->mSelectedItem]->Selectable() && mDesc->mSelectedItem != startedAt); + if (mDesc->mSelectedItem == startedAt) mDesc->mSelectedItem = oldSelect; S_Sound (CHAN_VOICE | CHAN_UI, "menu/cursor", snd_menuvolume, ATTN_NONE); return true;