diff options
author | 2021-10-31 12:31:16 +1100 | |
---|---|---|
committer | 2021-10-31 12:31:16 +1100 | |
commit | d64ea5331b2312f81df464fb22dcef0191216d86 (patch) | |
tree | a3f3784371da401e6a675e5b6b9734b88281a08d /src/frontend/mame/ui/cheatopt.cpp | |
parent | cfffc54b61cabc5ef9533396bf87324eb5eeb63e (diff) |
-frontend: Refactored menu event handling and fixed a number of issues. (#8777)
* Moved common code for drawing about box, info viewer, and other text box menus to a base class; removed the last of the info viewer logic and the multi-line item hack from the base menu class.
* Added previous/next group navigation for general inputs and plugin input selection menus.
* Moved message catalog logic to lib/util, allowing osd and emu to use localised messages.
* Made the base menu class use the UI manager’s feature for holding session state rather than a static map and mutex.
* Improved menu event handling model, and fixed many issues, particularly with menus behaving badly when hidden/shown.
* Added better support for menus that don’t participate in the usual menu stack, like the menuless sliders and the save/load state menus.
* Made a number of menus refresh state when being shown after being hidden (fixes MT08121 among other issues).
* Fixed indication of mounted slot option in the slot option details menu.
* Improved appearance of background menus when emulation isn't running - draw all menus in the stack, and darken the background menus to make the edges of the active menu clearer.
* Fixed locale issues in -listxml.
-debugger: Made GUI debuggers more uniform.
* Added new memory view features to Win32 debugger.
* Fixed spelling of hexadecimal in Cocoa debugger and added decimal address option.
* Fixed duplicate keyboard shortcut in Cocoa debugger (Shift-Cmd-D was both new device window and 64-bit float format).
* Made keyboard shortcuts slightly more consistent across debuggers.
-plugins: Moved input selection menu and sequence polling code to a common library. Fixed the issue that prevented keyboard inputs being mapped with -steadykey on.
-docs: Started adding some documentation for MAME's internal UI, and updated the list of example front-ends.
-Regenerated message catalog sources. For translators, the new strings are mostly:
* The names of the inputs provided by the OS-dependent layer for things like fullscreen and video features. These show up in the user interface inputs menu.
* The names for automatically generated views. These show up in the video options menu - test with a system with a lot of screens to see more variants.
* The input macro plugin UI.
* A few format strings for analog input assignments.
* A few strings for the about box header.
Diffstat (limited to 'src/frontend/mame/ui/cheatopt.cpp')
-rw-r--r-- | src/frontend/mame/ui/cheatopt.cpp | 56 |
1 files changed, 26 insertions, 30 deletions
diff --git a/src/frontend/mame/ui/cheatopt.cpp b/src/frontend/mame/ui/cheatopt.cpp index 1bfd8e4e0b3..9aae81134ef 100644 --- a/src/frontend/mame/ui/cheatopt.cpp +++ b/src/frontend/mame/ui/cheatopt.cpp @@ -9,12 +9,12 @@ *********************************************************************/ #include "emu.h" -#include "cheat.h" -#include "mame.h" +#include "ui/cheatopt.h" #include "ui/ui.h" -#include "ui/menu.h" -#include "ui/cheatopt.h" + +#include "cheat.h" +#include "mame.h" namespace ui { @@ -29,78 +29,73 @@ namespace ui { menu_cheat - handle the cheat menu -------------------------------------------------*/ -void menu_cheat::handle() +void menu_cheat::handle(event const *ev) { - /* process the menu */ - const event *menu_event = process(PROCESS_LR_REPEAT); - - - /* handle events */ - if (menu_event != nullptr && menu_event->itemref != nullptr) + // handle events + if (ev && ev->itemref) { bool changed = false; - /* clear cheat comment on any movement or keypress */ + // clear cheat comment on any movement or keypress machine().popmessage(); - /* handle reset all + reset all cheats for reload all option */ - if ((menu_event->itemref == ITEMREF_CHEATS_RESET_ALL || menu_event->itemref == ITEMREF_CHEATS_RELOAD_ALL) && menu_event->iptkey == IPT_UI_SELECT) + if ((ev->itemref == ITEMREF_CHEATS_RESET_ALL || ev->itemref == ITEMREF_CHEATS_RELOAD_ALL) && ev->iptkey == IPT_UI_SELECT) { + // handle reset all + reset all cheats for reload all option for (auto &curcheat : mame_machine_manager::instance()->cheat().entries()) if (curcheat->select_default_state()) changed = true; } - - /* handle individual cheats */ - else if (menu_event->itemref >= ITEMREF_CHEATS_FIRST_ITEM) + else if (ev->itemref >= ITEMREF_CHEATS_FIRST_ITEM) { - cheat_entry *curcheat = reinterpret_cast<cheat_entry *>(menu_event->itemref); + // handle individual cheats + cheat_entry *curcheat = reinterpret_cast<cheat_entry *>(ev->itemref); const char *string; - switch (menu_event->iptkey) + switch (ev->iptkey) { - /* if selected, activate a oneshot */ + // if selected, activate a oneshot case IPT_UI_SELECT: changed = curcheat->activate(); break; - /* if cleared, reset to default value */ + // if cleared, reset to default value case IPT_UI_CLEAR: changed = curcheat->select_default_state(); break; - /* left decrements */ + // left decrements case IPT_UI_LEFT: changed = curcheat->select_previous_state(); break; - /* right increments */ + // right increments case IPT_UI_RIGHT: changed = curcheat->select_next_state(); break; - /* bring up display comment if one exists */ + // bring up display comment if one exists case IPT_UI_DISPLAY_COMMENT: case IPT_UI_UP: case IPT_UI_DOWN: string = curcheat->comment(); - if (string != nullptr && string[0] != 0) + if (string && *string) machine().popmessage(_("Cheat Comment:\n%s"), string); break; } } - /* handle reload all */ - if (menu_event->itemref == ITEMREF_CHEATS_RELOAD_ALL && menu_event->iptkey == IPT_UI_SELECT) + // handle reload all + if (ev->itemref == ITEMREF_CHEATS_RELOAD_ALL && ev->iptkey == IPT_UI_SELECT) { - /* re-init cheat engine and thus reload cheats/cheats have already been turned off by here */ + // re-init cheat engine and thus reload cheats/cheats have already been turned off by here mame_machine_manager::instance()->cheat().reload(); - /* display the reloaded cheats */ + // display the reloaded cheats reset(reset_options::REMEMBER_REF); machine().popmessage(_("All cheats reloaded")); } - /* if things changed, update */ + // if things changed, update if (changed) reset(reset_options::REMEMBER_REF); } @@ -113,6 +108,7 @@ void menu_cheat::handle() menu_cheat::menu_cheat(mame_ui_manager &mui, render_container &container) : menu(mui, container) { + set_process_flags(PROCESS_LR_REPEAT); } void menu_cheat::populate(float &customtop, float &custombottom) |