diff --git a/rpcs3/Emu/RSX/Overlays/overlay_controls.h b/rpcs3/Emu/RSX/Overlays/overlay_controls.h index c17458f02e..dc2140a1c1 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_controls.h +++ b/rpcs3/Emu/RSX/Overlays/overlay_controls.h @@ -1177,8 +1177,8 @@ namespace rsx void update_selection(); - void select_next(); - void select_previous(); + void select_next(u16 count = 1); + void select_previous(u16 count = 1); void add_entry(std::unique_ptr& entry); diff --git a/rpcs3/Emu/RSX/Overlays/overlay_list_view.cpp b/rpcs3/Emu/RSX/Overlays/overlay_list_view.cpp index 129968d4c4..857e1eff7d 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_list_view.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_list_view.cpp @@ -91,20 +91,22 @@ namespace rsx refresh(); } - void list_view::select_next() + void list_view::select_next(u16 count) { - if (m_selected_entry < (m_elements_count - 1)) + const int max_entry = m_elements_count - 1; + + if (m_selected_entry < max_entry) { - m_selected_entry++; + m_selected_entry = std::min(m_selected_entry + count, max_entry); update_selection(); } } - void list_view::select_previous() + void list_view::select_previous(u16 count) { if (m_selected_entry > 0) { - m_selected_entry--; + m_selected_entry = std::max(0, m_selected_entry - count); update_selection(); } } diff --git a/rpcs3/Emu/RSX/Overlays/overlay_save_dialog.cpp b/rpcs3/Emu/RSX/Overlays/overlay_save_dialog.cpp index ef4b89fbea..1053cc0807 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_save_dialog.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_save_dialog.cpp @@ -129,6 +129,12 @@ namespace rsx case pad_button::dpad_down: m_list->select_next(); break; + case pad_button::L1: + m_list->select_previous(10); + break; + case pad_button::R1: + m_list->select_next(10); + break; default: LOG_TRACE(RSX, "[ui] Button %d pressed", (u8)button_press); }