diff options
Diffstat (limited to 'src/frontend/mame/ui/selmenu.cpp')
-rw-r--r-- | src/frontend/mame/ui/selmenu.cpp | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/frontend/mame/ui/selmenu.cpp b/src/frontend/mame/ui/selmenu.cpp index d55009623e8..29bec4fe639 100644 --- a/src/frontend/mame/ui/selmenu.cpp +++ b/src/frontend/mame/ui/selmenu.cpp @@ -1449,26 +1449,36 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey) validate_selection(1); // swallow left/right keys if they are not appropriate - bool const ignoreleft = ((selected_item().flags & FLAG_LEFT_ARROW) == 0); - bool const ignoreright = ((selected_item().flags & FLAG_RIGHT_ARROW) == 0); bool const leftclose = (ui_globals::panels_status == HIDE_BOTH || ui_globals::panels_status == HIDE_LEFT_PANEL); bool const rightclose = (ui_globals::panels_status == HIDE_BOTH || ui_globals::panels_status == HIDE_RIGHT_PANEL); // accept left/right keys as-is with repeat - if (!ignoreleft && exclusive_input_pressed(iptkey, IPT_UI_LEFT, (flags & PROCESS_LR_REPEAT) ? 6 : 0)) + if (exclusive_input_pressed(iptkey, IPT_UI_LEFT, (flags & PROCESS_LR_REPEAT) ? 6 : 0)) { - // Swap the right panel if (m_focus == focused_menu::RIGHTTOP) + { + // Swap the right panel and swallow it ui_globals::rpanel = RP_IMAGES; - return; + iptkey = IPT_INVALID; + } + else + { + return; + } } - if (!ignoreright && exclusive_input_pressed(iptkey, IPT_UI_RIGHT, (flags & PROCESS_LR_REPEAT) ? 6 : 0)) + if (exclusive_input_pressed(iptkey, IPT_UI_RIGHT, (flags & PROCESS_LR_REPEAT) ? 6 : 0)) { - // Swap the right panel if (m_focus == focused_menu::RIGHTTOP) + { + // Swap the right panel and swallow it ui_globals::rpanel = RP_INFOS; - return; + iptkey = IPT_INVALID; + } + else + { + return; + } } // up backs up by one item @@ -1478,7 +1488,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey) { return; } - else if (!rightclose && m_focus == focused_menu::RIGHTBOTTOM) + else if (!rightclose && ((m_focus == focused_menu::RIGHTTOP) || (m_focus == focused_menu::RIGHTBOTTOM))) { m_topline_datsview--; return; @@ -1501,7 +1511,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey) { return; } - else if (!rightclose && m_focus == focused_menu::RIGHTBOTTOM) + else if (!rightclose && ((m_focus == focused_menu::RIGHTTOP) || (m_focus == focused_menu::RIGHTBOTTOM))) { m_topline_datsview++; return; @@ -1520,7 +1530,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey) if (exclusive_input_pressed(iptkey, IPT_UI_PAGE_UP, 6)) { // Infos - if (!rightclose && m_focus == focused_menu::RIGHTBOTTOM) + if (!rightclose && ((m_focus == focused_menu::RIGHTTOP) || (m_focus == focused_menu::RIGHTBOTTOM))) { m_topline_datsview -= m_right_visible_lines - 3; return; @@ -1538,7 +1548,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey) if (exclusive_input_pressed(iptkey, IPT_UI_PAGE_DOWN, 6)) { // Infos - if (!rightclose && m_focus == focused_menu::RIGHTBOTTOM) + if (!rightclose && ((m_focus == focused_menu::RIGHTTOP) || (m_focus == focused_menu::RIGHTBOTTOM))) { m_topline_datsview += m_right_visible_lines - 3; return; @@ -1559,7 +1569,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey) { return; } - else if (!rightclose && m_focus == focused_menu::RIGHTBOTTOM) + else if (!rightclose && ((m_focus == focused_menu::RIGHTTOP) || (m_focus == focused_menu::RIGHTBOTTOM))) { m_topline_datsview = 0; return; @@ -1576,7 +1586,7 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey) { return; } - else if (!rightclose && m_focus == focused_menu::RIGHTBOTTOM) + else if (!rightclose && ((m_focus == focused_menu::RIGHTTOP) || (m_focus == focused_menu::RIGHTBOTTOM))) { m_topline_datsview = m_total_lines; return; @@ -1618,14 +1628,6 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey) case IPT_UI_FOCUS_PREV: case IPT_UI_PAUSE: continue; - case IPT_UI_LEFT: - if (ignoreleft) - continue; - break; - case IPT_UI_RIGHT: - if (ignoreright) - continue; - break; } if (exclusive_input_pressed(iptkey, code, 0)) |