mirror of
https://github.com/holub/mame
synced 2025-10-05 16:50:57 +03:00
ui/menu: Move one variable down into subclasses; fix some confusing variable naming (nw)
This commit is contained in:
parent
defc0ce5cf
commit
39e33cc407
@ -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
|
||||
|
||||
|
@ -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());
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user