summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend/mame/ui/pluginopt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/mame/ui/pluginopt.cpp')
-rw-r--r--src/frontend/mame/ui/pluginopt.cpp45
1 files changed, 26 insertions, 19 deletions
diff --git a/src/frontend/mame/ui/pluginopt.cpp b/src/frontend/mame/ui/pluginopt.cpp
index 4bc726c9aea..f21511f1645 100644
--- a/src/frontend/mame/ui/pluginopt.cpp
+++ b/src/frontend/mame/ui/pluginopt.cpp
@@ -19,14 +19,12 @@
namespace ui {
-void menu_plugin::handle()
+void menu_plugin::handle(event const *ev)
{
- const event *menu_event = process(0);
-
- if (menu_event && menu_event->itemref)
+ if (ev && ev->itemref)
{
- if (menu_event->iptkey == IPT_UI_SELECT)
- menu::stack_push<menu_plugin_opt>(ui(), container(), (char *)menu_event->itemref);
+ if (ev->iptkey == IPT_UI_SELECT)
+ menu::stack_push<menu_plugin_opt>(ui(), container(), (char *)ev->itemref);
}
}
@@ -46,7 +44,7 @@ void menu_plugin::populate(float &customtop, float &custombottom)
void menu_plugin::show_menu(mame_ui_manager &mui, render_container &container, char *menu)
{
// reset the menu stack
- menu::stack_reset(mui.machine());
+ menu::stack_reset(mui);
// add the plugin menu entry
menu::stack_push<menu_plugin_opt>(mui, container, menu);
@@ -65,19 +63,17 @@ menu_plugin::~menu_plugin()
menu_plugin_opt::menu_plugin_opt(mame_ui_manager &mui, render_container &container, std::string_view menu) :
ui::menu(mui, container),
m_menu(menu),
- m_process_flags(0U),
m_need_idle(false)
{
}
-void menu_plugin_opt::handle()
+void menu_plugin_opt::handle(event const *ev)
{
- event const *const menu_event = process(m_process_flags);
- void *const itemref = menu_event ? menu_event->itemref : get_selection_ref();
+ void *const itemref = ev ? ev->itemref : get_selection_ref();
std::string key;
- if (menu_event)
+ if (ev)
{
- switch (menu_event->iptkey)
+ switch (ev->iptkey)
{
case IPT_UI_UP:
key = "up";
@@ -91,6 +87,12 @@ void menu_plugin_opt::handle()
case IPT_UI_RIGHT:
key = "right";
break;
+ case IPT_UI_PREV_GROUP:
+ key = "prevgroup";
+ break;
+ case IPT_UI_NEXT_GROUP:
+ key = "nextgroup";
+ break;
case IPT_UI_SELECT:
key = "select";
break;
@@ -104,7 +106,7 @@ void menu_plugin_opt::handle()
key = "cancel";
break;
case IPT_SPECIAL:
- key = std::to_string((u32)menu_event->unichar);
+ key = std::to_string((u32)ev->unichar);
break;
default:
break;
@@ -117,7 +119,7 @@ void menu_plugin_opt::handle()
set_selection(reinterpret_cast<void *>(uintptr_t(*result.second)));
if (result.first)
reset(reset_options::REMEMBER_REF);
- else if (menu_event && (menu_event->iptkey == IPT_UI_CANCEL))
+ else if (ev && (ev->iptkey == IPT_UI_CANCEL))
stack_pop();
}
}
@@ -173,7 +175,7 @@ void menu_plugin_opt::populate(float &customtop, float &custombottom)
if (sel)
set_selection(reinterpret_cast<void *>(uintptr_t(*sel)));
- m_process_flags = 0U;
+ uint32_t process_flags = 0U;
m_need_idle = false;
if (!flags.empty())
{
@@ -188,15 +190,20 @@ void menu_plugin_opt::populate(float &customtop, float &custombottom)
flag_start = mflags.find_first_not_of(' ');
if (flag == "lralways")
- m_process_flags |= PROCESS_LR_ALWAYS;
+ process_flags |= PROCESS_LR_ALWAYS;
else if (flag == "lrrepeat")
- m_process_flags |= PROCESS_LR_REPEAT;
+ process_flags |= PROCESS_LR_REPEAT;
else if (flag == "customnav")
- m_process_flags |= PROCESS_CUSTOM_NAV;
+ process_flags |= PROCESS_CUSTOM_NAV;
else if (flag == "idle")
m_need_idle = true;
+ else if (flag == "nokeys")
+ process_flags |= PROCESS_NOKEYS;
}
+ if (process_flags & PROCESS_NOKEYS)
+ m_need_idle = true;
}
+ set_process_flags(process_flags);
}
menu_plugin_opt::~menu_plugin_opt()