ui/menu: Move one variable down into subclasses; fix some confusing variable naming (nw)

This commit is contained in:
AJR 2019-09-26 12:26:10 -04:00
parent defc0ce5cf
commit 39e33cc407
7 changed files with 35 additions and 33 deletions

View File

@ -371,7 +371,6 @@ private:
protected: // TODO: remove need to expose these
int top_line; // main box top line
int skip_main_items;
int m_visible_lines; // main box visible lines
int m_visible_items; // number of visible items

View File

@ -1396,7 +1396,7 @@ void menu_select_game::make_topbox_text(std::string &line0, std::string &line1,
line0 = string_format(_("%1$s %2$s ( %3$d / %4$d machines (%5$d BIOS) )"),
emulator_info::get_appname(),
bare_build_version,
visible_items,
m_available_items,
(driver_list::total() - 1),
m_persistent_data.bios_count());

View File

@ -719,10 +719,10 @@ void menu_select_launch::inkey_navigation()
switch (get_focus())
{
case focused_menu::MAIN:
if (selected_index() <= visible_items)
if (selected_index() <= m_available_items)
{
m_prev_selected = get_selection_ref();
set_selected_index(visible_items + 1);
set_selected_index(m_available_items + 1);
}
else
{
@ -1382,7 +1382,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey)
m_topline_datsview--;
return;
}
else if (selected_index() == visible_items + 1 || is_first_selected() || m_ui_error)
else if (selected_index() == m_available_items + 1 || is_first_selected() || m_ui_error)
{
return;
}
@ -1405,7 +1405,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey)
m_topline_datsview++;
return;
}
else if (is_last_selected() || selected_index() == visible_items - 1 || m_ui_error)
else if (is_last_selected() || selected_index() == m_available_items - 1 || m_ui_error)
{
return;
}
@ -1425,11 +1425,11 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey)
return;
}
if (selected_index() < visible_items && !m_ui_error)
if (selected_index() < m_available_items && !m_ui_error)
{
set_selected_index(std::max(selected_index() - m_visible_items, 0));
top_line -= m_visible_items - (top_line + m_visible_lines == visible_items);
top_line -= m_visible_items - (top_line + m_visible_lines == m_available_items);
}
}
@ -1443,9 +1443,9 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey)
return;
}
if (selected_index() < visible_items && !m_ui_error)
if (selected_index() < m_available_items && !m_ui_error)
{
set_selected_index(std::min(selected_index() + m_visible_lines - 2 + (selected_index() == 0), visible_items - 1));
set_selected_index(std::min(selected_index() + m_visible_lines - 2 + (selected_index() == 0), m_available_items - 1));
top_line += m_visible_lines - 2;
}
@ -1464,7 +1464,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey)
return;
}
if (selected_index() < visible_items && !m_ui_error)
if (selected_index() < m_available_items && !m_ui_error)
select_first_item();
}
@ -1481,8 +1481,8 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey)
return;
}
if (selected_index() < visible_items && !m_ui_error)
set_selected_index(top_line = visible_items - 1);
if (selected_index() < m_available_items && !m_ui_error)
set_selected_index(top_line = m_available_items - 1);
}
// pause enables/disables pause
@ -1554,7 +1554,7 @@ void menu_select_launch::handle_events(uint32_t flags, event &ev)
{
if (hover() >= 0 && hover() < item_count())
{
if (hover() >= visible_items - 1 && selected_index() < visible_items)
if (hover() >= m_available_items - 1 && selected_index() < m_available_items)
m_prev_selected = get_selection_ref();
set_selected_index(hover());
m_focus = focused_menu::MAIN;
@ -1562,12 +1562,12 @@ void menu_select_launch::handle_events(uint32_t flags, event &ev)
else if (hover() == HOVER_ARROW_UP)
{
set_selected_index(std::max(selected_index() - m_visible_items, 0));
top_line -= m_visible_items - (top_line + m_visible_lines == visible_items);
top_line -= m_visible_items - (top_line + m_visible_lines == m_available_items);
set_pressed();
}
else if (hover() == HOVER_ARROW_DOWN)
{
set_selected_index(std::min(selected_index() + m_visible_lines - 2 + (selected_index() == 0), visible_items - 1));
set_selected_index(std::min(selected_index() + m_visible_lines - 2 + (selected_index() == 0), m_available_items - 1));
top_line += m_visible_lines - 2;
set_pressed();
}
@ -1653,7 +1653,7 @@ void menu_select_launch::handle_events(uint32_t flags, event &ev)
{
if (local_menu_event.zdelta > 0)
{
if (selected_index() >= visible_items || is_first_selected() || m_ui_error)
if (selected_index() >= m_available_items || is_first_selected() || m_ui_error)
break;
set_selected_index(selected_index() - local_menu_event.num_lines);
if (selected_index() < top_line + (top_line != 0))
@ -1661,9 +1661,9 @@ void menu_select_launch::handle_events(uint32_t flags, event &ev)
}
else
{
if (selected_index() >= visible_items - 1 || m_ui_error)
if (selected_index() >= m_available_items - 1 || m_ui_error)
break;
set_selected_index(std::min(selected_index() + local_menu_event.num_lines, visible_items - 1));
set_selected_index(std::min(selected_index() + local_menu_event.num_lines, m_available_items - 1));
if (selected_index() >= top_line + m_visible_items + (top_line != 0))
top_line += local_menu_event.num_lines;
}
@ -1759,7 +1759,7 @@ void menu_select_launch::draw(uint32_t flags)
draw_background();
clear_hover();
visible_items = (m_is_swlist) ? item_count() - 2 : item_count() - 2 - skip_main_items;
m_available_items = (m_is_swlist) ? item_count() - 2 : item_count() - 2 - skip_main_items;
float extra_height = (m_is_swlist) ? 2.0f * line_height : (2.0f + skip_main_items) * line_height;
float visible_extra_menu_height = get_customtop() + get_custombottom() + extra_height;
@ -1802,21 +1802,21 @@ void menu_select_launch::draw(uint32_t flags)
float line = visible_top + (float(m_visible_lines) * line_height);
ui().draw_outlined_box(container(), x1, y1, x2, y2, ui().colors().background_color());
if (visible_items < m_visible_lines)
m_visible_lines = visible_items;
if (m_available_items < m_visible_lines)
m_visible_lines = m_available_items;
if (top_line < 0 || is_first_selected())
top_line = 0;
if (selected_index() < visible_items && top_line + m_visible_lines >= visible_items)
top_line = visible_items - m_visible_lines;
if (selected_index() < m_available_items && top_line + m_visible_lines >= m_available_items)
top_line = m_available_items - m_visible_lines;
// determine effective positions taking into account the hilighting arrows
float effective_width = visible_width - 2.0f * gutter_width;
float effective_left = visible_left + gutter_width;
if ((m_focus == focused_menu::MAIN) && (selected_index() < visible_items))
if ((m_focus == focused_menu::MAIN) && (selected_index() < m_available_items))
m_prev_selected = nullptr;
int const n_loop = (std::min)(m_visible_lines, visible_items);
int const n_loop = (std::min)(m_visible_lines, m_available_items);
for (int linenum = 0; linenum < n_loop; linenum++)
{
float line_y = visible_top + (float)linenum * line_height;
@ -1871,7 +1871,7 @@ void menu_select_launch::draw(uint32_t flags)
if (hover() == itemnum)
set_hover(HOVER_ARROW_UP);
}
else if (linenum == m_visible_lines - 1 && itemnum != visible_items - 1)
else if (linenum == m_visible_lines - 1 && itemnum != m_available_items - 1)
{
// if we're on the bottom line, display the down arrow
draw_arrow(0.5f * (x1 + x2) - 0.5f * ud_arrow_width, line_y + 0.25f * line_height,
@ -1938,7 +1938,7 @@ void menu_select_launch::draw(uint32_t flags)
}
}
for (size_t count = visible_items; count < item_count(); count++)
for (size_t count = m_available_items; count < item_count(); count++)
{
const menu_item &pitem = item(count);
const char *itemtext = pitem.text.c_str();
@ -1993,7 +1993,7 @@ void menu_select_launch::draw(uint32_t flags)
custom_render(get_selection_ref(), get_customtop(), get_custombottom(), x1, y1, x2, y2);
// return the number of visible lines, minus 1 for top arrow and 1 for bottom arrow
m_visible_items = m_visible_lines - (top_line != 0) - (top_line + m_visible_lines != visible_items);
m_visible_items = m_visible_lines - (top_line != 0) - (top_line + m_visible_lines != m_available_items);
// noinput
if (noinput)

View File

@ -156,7 +156,8 @@ protected:
return (uintptr_t(selected_ref) > skip_main_items) ? selected_ref : m_prev_selected;
}
int visible_items;
int m_available_items;
int skip_main_items;
void *m_prev_selected;
int m_total_lines;
int m_topline_datsview;

View File

@ -633,7 +633,7 @@ void menu_select_software::get_selection(ui_software_info const *&software, game
void menu_select_software::make_topbox_text(std::string &line0, std::string &line1, std::string &line2) const
{
// determine the text for the header
int vis_item = !m_search.empty() ? visible_items : (m_has_empty_start ? visible_items - 1 : visible_items);
int vis_item = !m_search.empty() ? m_available_items : (m_has_empty_start ? m_available_items - 1 : m_available_items);
line0 = string_format(_("%1$s %2$s ( %3$d / %4$d software packages )"), emulator_info::get_appname(), bare_build_version, vis_item, m_swinfo.size() - 1);
line1 = string_format(_("Driver: \"%1$s\" software list "), m_driver.type.fullname());

View File

@ -37,6 +37,7 @@ simple_menu_select_game::simple_menu_select_game(mame_ui_manager &mui, render_co
: menu(mui, container)
, m_error(false), m_rerandomize(false)
, m_search()
, m_skip_main_items(0)
, m_driverlist(driver_list::total() + 1)
, m_drivlist()
, m_cached_driver(nullptr)
@ -275,7 +276,7 @@ void simple_menu_select_game::populate(float &customtop, float &custombottom)
{
item_append(menu_item_type::SEPARATOR);
item_append(_("Configure Options"), "", 0, (void *)1);
skip_main_items = 1;
m_skip_main_items = 1;
}
// configure the custom rendering
@ -307,7 +308,7 @@ void simple_menu_select_game::custom_render(void *selectedref, float top, float
ui().colors().text_color(), ui().colors().background_color(), 1.0f);
// determine the text to render below
driver = ((uintptr_t)selectedref > skip_main_items) ? (const game_driver *)selectedref : nullptr;
driver = ((uintptr_t)selectedref > m_skip_main_items) ? (const game_driver *)selectedref : nullptr;
if (driver)
{
// first line is game name

View File

@ -48,6 +48,7 @@ private:
bool m_error;
bool m_rerandomize;
std::string m_search;
int m_skip_main_items;
int m_matchlist[VISIBLE_GAMES_IN_LIST];
std::vector<const game_driver *> m_driverlist;
std::unique_ptr<driver_enumerator> m_drivlist;