diff options
author | Vas Crabb <vas@vastheman.com> | 2021-10-20 02:03:43 +1100 |
---|---|---|
committer | Vas Crabb <vas@vastheman.com> | 2021-10-20 02:03:43 +1100 |
commit | 0a9ea09a9a328884b61ce57c2e3b51705da50467 (patch) | |
tree | 98153d6f2244b0053d9c1894b5c71277fb18522d /src/frontend/mame/ui | |
parent | 9e7779bdd5c17a847ed4c06a9b7e68a39ec6576b (diff) |
Tie up a few loose ends:
debugger: Octal cheats for octal address spaces.
frontend: Pass events for automatically generated menu items to the
plugin - they will have index zero.
frontend: Don't try calling the data plugin from the main menu if the
system isn't starting yet - doing so will prevent the data plugin from
loading at all.
Diffstat (limited to 'src/frontend/mame/ui')
-rw-r--r-- | src/frontend/mame/ui/datmenu.cpp | 16 | ||||
-rw-r--r-- | src/frontend/mame/ui/datmenu.h | 2 | ||||
-rw-r--r-- | src/frontend/mame/ui/mainmenu.cpp | 5 | ||||
-rw-r--r-- | src/frontend/mame/ui/pluginopt.cpp | 60 | ||||
-rw-r--r-- | src/frontend/mame/ui/selmenu.cpp | 2 |
5 files changed, 43 insertions, 42 deletions
diff --git a/src/frontend/mame/ui/datmenu.cpp b/src/frontend/mame/ui/datmenu.cpp index 1d3ef0c7cff..10c5e3c9717 100644 --- a/src/frontend/mame/ui/datmenu.cpp +++ b/src/frontend/mame/ui/datmenu.cpp @@ -70,20 +70,20 @@ menu_dats_view::menu_dats_view(mame_ui_manager &mui, render_container &container // ctor //------------------------------------------------- -menu_dats_view::menu_dats_view(mame_ui_manager &mui, render_container &container, const ui_software_info *swinfo, const ui_system_info *system) +menu_dats_view::menu_dats_view(mame_ui_manager &mui, render_container &container, const ui_software_info &swinfo) : menu(mui, container) - , m_system(!system ? &system_list::instance().systems()[driver_list::find(mui.machine().system().name)] : system) - , m_swinfo(swinfo) + , m_system(nullptr) + , m_swinfo(&swinfo) , m_issoft(true) , m_layout() , m_actual(0) - , m_list(swinfo->listname) - , m_short(swinfo->shortname) - , m_long(swinfo->longname) - , m_parent(swinfo->parentname) + , m_list(swinfo.listname) + , m_short(swinfo.shortname) + , m_long(swinfo.longname) + , m_parent(swinfo.parentname) { - if (!swinfo->infotext.empty()) + if (!swinfo.infotext.empty()) m_items_list.emplace_back(_("Software List Info"), 0, ""); std::vector<std::string> lua_list; if (mame_machine_manager::instance()->lua()->call_plugin("data_list", std::string(m_short).append(1, ',').append(m_list).c_str(), lua_list)) diff --git a/src/frontend/mame/ui/datmenu.h b/src/frontend/mame/ui/datmenu.h index ccc8bd8b2a4..9e81d9e2d2e 100644 --- a/src/frontend/mame/ui/datmenu.h +++ b/src/frontend/mame/ui/datmenu.h @@ -36,7 +36,7 @@ namespace ui { class menu_dats_view : public menu { public: - menu_dats_view(mame_ui_manager &mui, render_container &container, const ui_software_info *swinfo, const ui_system_info *system = nullptr); + menu_dats_view(mame_ui_manager &mui, render_container &container, const ui_software_info &swinfo); menu_dats_view(mame_ui_manager &mui, render_container &container, const ui_system_info *system = nullptr); virtual ~menu_dats_view() override; diff --git a/src/frontend/mame/ui/mainmenu.cpp b/src/frontend/mame/ui/mainmenu.cpp index 32240167318..73084728edb 100644 --- a/src/frontend/mame/ui/mainmenu.cpp +++ b/src/frontend/mame/ui/mainmenu.cpp @@ -159,8 +159,9 @@ void menu_main::populate(float &customtop, float &custombottom) if (machine().options().plugins() && !mame_machine_manager::instance()->lua()->get_menu().empty()) item_append(_("Plugin Options"), 0, (void *)PLUGINS); - if (mame_machine_manager::instance()->lua()->call_plugin_check<const char *>("data_list", "", true)) - item_append(_("External DAT View"), 0, (void *)EXTERNAL_DATS); + if (machine().phase() >= machine_phase::RESET) + if (mame_machine_manager::instance()->lua()->call_plugin_check<const char *>("data_list", "", true)) + item_append(_("External DAT View"), 0, (void *)EXTERNAL_DATS); item_append(menu_item_type::SEPARATOR); diff --git a/src/frontend/mame/ui/pluginopt.cpp b/src/frontend/mame/ui/pluginopt.cpp index 83faaa43603..d36503cdcee 100644 --- a/src/frontend/mame/ui/pluginopt.cpp +++ b/src/frontend/mame/ui/pluginopt.cpp @@ -72,40 +72,40 @@ void menu_plugin_opt::handle() { const event *menu_event = process(0); - if (menu_event && uintptr_t(menu_event->itemref)) + if (menu_event) { std::string key; switch (menu_event->iptkey) { - case IPT_UI_UP: - key = "up"; - break; - case IPT_UI_DOWN: - key = "down"; - break; - case IPT_UI_LEFT: - key = "left"; - break; - case IPT_UI_RIGHT: - key = "right"; - break; - case IPT_UI_SELECT: - key = "select"; - break; - case IPT_UI_DISPLAY_COMMENT: - key = "comment"; - break; - case IPT_UI_CLEAR: - key = "clear"; - break; - case IPT_UI_CANCEL: - key = "cancel"; - break; - case IPT_SPECIAL: - key = std::to_string((u32)menu_event->unichar); - break; - default: - return; + case IPT_UI_UP: + key = "up"; + break; + case IPT_UI_DOWN: + key = "down"; + break; + case IPT_UI_LEFT: + key = "left"; + break; + case IPT_UI_RIGHT: + key = "right"; + break; + case IPT_UI_SELECT: + key = "select"; + break; + case IPT_UI_DISPLAY_COMMENT: + key = "comment"; + break; + case IPT_UI_CLEAR: + key = "clear"; + break; + case IPT_UI_CANCEL: + key = "cancel"; + break; + case IPT_SPECIAL: + key = std::to_string((u32)menu_event->unichar); + break; + default: + return; } if (mame_machine_manager::instance()->lua()->menu_callback(m_menu, uintptr_t(menu_event->itemref), key)) reset(reset_options::REMEMBER_REF); diff --git a/src/frontend/mame/ui/selmenu.cpp b/src/frontend/mame/ui/selmenu.cpp index 303334de17b..c5718bdc564 100644 --- a/src/frontend/mame/ui/selmenu.cpp +++ b/src/frontend/mame/ui/selmenu.cpp @@ -856,7 +856,7 @@ void menu_select_launch::inkey_dats() ui_system_info const *system; get_selection(software, system); if (software && !software->startempty) - menu::stack_push<menu_dats_view>(ui(), container(), software); + menu::stack_push<menu_dats_view>(ui(), container(), *software); else if (system) menu::stack_push<menu_dats_view>(ui(), container(), system); } |