From bb04395712a9cee6e36ab7eadc335f160a287b9c Mon Sep 17 00:00:00 2001 From: J-D-K Date: Wed, 19 Nov 2025 14:22:51 -0500 Subject: [PATCH] Bring back menu wrapping. --- source/appstates/BackupMenuState.cpp | 1 - source/ui/Menu.cpp | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/source/appstates/BackupMenuState.cpp b/source/appstates/BackupMenuState.cpp index c31c579..2d0c415 100644 --- a/source/appstates/BackupMenuState.cpp +++ b/source/appstates/BackupMenuState.cpp @@ -442,7 +442,6 @@ void BackupMenuState::pop_save_empty() void BackupMenuState::deactivate_state() { - logger::log("BackupMenuState::deactivate_state()"); sm_slidePanel->clear_elements(); sm_slidePanel->reset(); sm_backupMenu->reset(); diff --git a/source/ui/Menu.cpp b/source/ui/Menu.cpp index 4a6128e..2d3147d 100644 --- a/source/ui/Menu.cpp +++ b/source/ui/Menu.cpp @@ -183,16 +183,26 @@ void ui::Menu::update_scroll_text() void ui::Menu::handle_input() { + // Get the length of the menu. + const int optionsSize = m_options.size(); + + // Control bools. const bool upPressed = input::button_pressed(HidNpadButton_AnyUp); const bool downPressed = input::button_pressed(HidNpadButton_AnyDown); const bool leftPressed = input::button_pressed(HidNpadButton_AnyLeft); const bool rightPressed = input::button_pressed(HidNpadButton_AnyRight); const bool lShoulderPressed = input::button_pressed(HidNpadButton_L); const bool rShoulderPressed = input::button_pressed(HidNpadButton_R); - const int optionsSize = m_options.size(); + + // Wrapping conditions. + const bool wrapEnd = upPressed && m_selected - 1 < 0; + const bool wrapBegin = downPressed && m_selected + 1 >= optionsSize; const int previousSelected = m_selected; - if (upPressed) { --m_selected; } + + if (wrapEnd) { m_selected = optionsSize - 1; } + else if (wrapBegin) { m_selected = 0; } + else if (upPressed) { --m_selected; } else if (downPressed) { ++m_selected; } else if (leftPressed) { m_selected -= m_scrollLength; } else if (rightPressed) { m_selected += m_scrollLength; }