diff options
author | Vas Crabb <vas@vastheman.com> | 2021-11-03 05:18:06 +1100 |
---|---|---|
committer | Vas Crabb <vas@vastheman.com> | 2021-11-03 05:18:06 +1100 |
commit | dd43f801a1839b526de1f3b0196d27073c0ebd7a (patch) | |
tree | 5dc3f56fdc8bc157c386e106cf659f997fc68f00 /src/frontend/mame/ui | |
parent | e1863f8c6a023951090eca7a9d3a727f632c424e (diff) |
-emu/ioport.cpp: Fixed "MAME lost my joystick settings!!!1!11!
-plugins: Gave the timecode plugin an option to count emulated frames.
Diffstat (limited to 'src/frontend/mame/ui')
-rw-r--r-- | src/frontend/mame/ui/inputmap.cpp | 36 | ||||
-rw-r--r-- | src/frontend/mame/ui/menu.cpp | 3 |
2 files changed, 28 insertions, 11 deletions
diff --git a/src/frontend/mame/ui/inputmap.cpp b/src/frontend/mame/ui/inputmap.cpp index a651795ef6c..a747c468f72 100644 --- a/src/frontend/mame/ui/inputmap.cpp +++ b/src/frontend/mame/ui/inputmap.cpp @@ -120,6 +120,7 @@ void menu_input_general::update_input(input_item_data &seqchangeditem) { const input_type_entry &entry = *reinterpret_cast<const input_type_entry *>(seqchangeditem.ref); machine().ioport().set_type_seq(entry.type(), entry.player(), seqchangeditem.seqtype, seqchangeditem.seq); + seqchangeditem.seq = machine().ioport().type_seq(entry.type(), entry.player(), seqchangeditem.seqtype); } @@ -233,9 +234,17 @@ void menu_input_specific::update_input(input_item_data &seqchangeditem) ioport_field::user_settings settings; // yeah, the const_cast is naughty, but we know we stored a non-const reference in it - reinterpret_cast<const ioport_field *>(seqchangeditem.ref)->get_user_settings(settings); + ioport_field const &field(*reinterpret_cast<ioport_field const *>(seqchangeditem.ref)); + field.get_user_settings(settings); settings.seq[seqchangeditem.seqtype] = seqchangeditem.seq; - reinterpret_cast<ioport_field *>(const_cast<void *>(seqchangeditem.ref))->set_user_settings(settings); + if (seqchangeditem.seq.is_default()) + settings.cfg[seqchangeditem.seqtype].clear(); + else if (!seqchangeditem.seq.length()) + settings.cfg[seqchangeditem.seqtype] = "NONE"; + else + settings.cfg[seqchangeditem.seqtype] = machine().input().seq_to_tokens(seqchangeditem.seq); + const_cast<ioport_field &>(field).set_user_settings(settings); + seqchangeditem.seq = field.seq(seqchangeditem.seqtype); } @@ -276,7 +285,7 @@ void menu_input::menu_activated() void menu_input::toggle_none_default(input_seq &selected_seq, input_seq &original_seq, const input_seq &selected_defseq) { if (original_seq.empty()) // if we used to be "none", toggle to the default value - selected_seq = selected_defseq; + selected_seq.set_default(); else // otherwise, toggle to "none" selected_seq.reset(); } @@ -425,12 +434,6 @@ void menu_input::handle(event const *ev) seqchangeditem = &item; break; - case IPT_UI_LEFT: // flip between set and append - case IPT_UI_RIGHT: // not very discoverable, but with the prompt it isn't completely opaque - if (record_next || !item.seq.empty()) - record_next = !record_next; - break; - case IPT_UI_PREV_GROUP: { auto current = std::distance(data.data(), &item); @@ -492,6 +495,21 @@ void menu_input::handle(event const *ev) record_next = false; lastitem = &item; } + + // flip between set and append + // not very discoverable, but with the prompt it isn't completely opaque + if ((IPT_UI_LEFT == ev->iptkey) || (IPT_UI_RIGHT == ev->iptkey)) + { + if (erroritem) + { + errormsg.clear(); + erroritem = nullptr; + } + else if (record_next || !item.seq.empty()) + { + record_next = !record_next; + } + } } // if the sequence changed, update it diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp index f42b927091b..94b4b1eff5e 100644 --- a/src/frontend/mame/ui/menu.cpp +++ b/src/frontend/mame/ui/menu.cpp @@ -504,8 +504,7 @@ void menu::draw(uint32_t flags) visible_main_menu_height += 0.01f; // if we are too wide or too tall, clamp it down - if (visible_width + 2.0f * lr_border > 1.0f) - visible_width = 1.0f - 2.0f * lr_border; + visible_width = std::min(visible_width, 1.0f - ((lr_border + (aspect * UI_LINE_WIDTH)) * 2.0f)); // if the menu and extra menu won't fit, take away part of the regular menu, it will scroll if (visible_main_menu_height + visible_extra_menu_height + 2.0f * ui().box_tb_border() > 1.0f) |