mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-03-17 18:55:19 +01:00
overlays: Fix bug with list view element count calculation and selection wrap-around
This commit is contained in:
parent
2fd5b1b4be
commit
f9af53f215
|
|
@ -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<u16>(total_height)) / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
advance_pos = menu_entry_margin;
|
||||
}
|
||||
advance_pos = (h - ::narrow<u16>(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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ namespace rsx
|
|||
return add_element(ptr);
|
||||
}
|
||||
|
||||
void clear_items();
|
||||
virtual void clear_items();
|
||||
|
||||
layout_container();
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ namespace rsx
|
|||
}
|
||||
|
||||
void add_entry(std::unique_ptr<overlay_element>& entry);
|
||||
void clear_items() override;
|
||||
|
||||
u16 get_elements_count() const;
|
||||
s32 get_selected_index() const;
|
||||
|
|
|
|||
Loading…
Reference in a new issue