diff --git a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_page.cpp b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_page.cpp index 857112eaca..537fca0157 100644 --- a/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_page.cpp +++ b/rpcs3/Emu/RSX/Overlays/HomeMenu/overlay_home_menu_page.cpp @@ -139,16 +139,13 @@ namespace rsx } // Center vertically if necessary - if (total_height < h) + if (total_height < h && center_vertically) { - if (center_vertically) - { - advance_pos = (h - ::narrow(total_height)) / 2; - } - else - { - advance_pos = menu_entry_margin; - } + advance_pos = (h - ::narrow(total_height)) / 2; + } + else + { + advance_pos = menu_entry_margin; } for (auto& entry : m_entries) @@ -271,9 +268,12 @@ namespace rsx case pad_button::dpad_up: case pad_button::ls_up: { - if (!is_auto_repeat && get_selected_index() <= 0) + if (get_selected_index() <= 0) { - select_entry(get_elements_count() - 1); + if (!is_auto_repeat) + { + select_entry(get_elements_count() - 1); + } break; } @@ -283,9 +283,12 @@ namespace rsx case pad_button::dpad_down: case pad_button::ls_down: { - if (!is_auto_repeat && get_selected_index() >= (get_elements_count() - 1)) + if (get_selected_index() >= (get_elements_count() - 1)) { - select_entry(0); + if (!is_auto_repeat) + { + select_entry(0); + } break; } diff --git a/rpcs3/Emu/RSX/Overlays/overlay_controls.h b/rpcs3/Emu/RSX/Overlays/overlay_controls.h index 2842a14109..dcfe33b199 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_controls.h +++ b/rpcs3/Emu/RSX/Overlays/overlay_controls.h @@ -264,7 +264,7 @@ namespace rsx return add_element(ptr); } - void clear_items(); + virtual void clear_items(); layout_container(); diff --git a/rpcs3/Emu/RSX/Overlays/overlay_list_view.cpp b/rpcs3/Emu/RSX/Overlays/overlay_list_view.cpp index 1ac3f5c487..b2cb2ea2c5 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_list_view.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_list_view.cpp @@ -189,6 +189,15 @@ namespace rsx update_selection(); } + void list_view::clear_items() + { + layout_container::clear_items(); + + m_elements_height = 0; + m_selected_entry = -1; + m_elements_count = 0; + } + u16 list_view::get_elements_count() const { return m_elements_count; diff --git a/rpcs3/Emu/RSX/Overlays/overlay_list_view.hpp b/rpcs3/Emu/RSX/Overlays/overlay_list_view.hpp index 360ab6c718..72b5672fed 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_list_view.hpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_list_view.hpp @@ -42,6 +42,7 @@ namespace rsx } void add_entry(std::unique_ptr& entry); + void clear_items() override; u16 get_elements_count() const; s32 get_selected_index() const;