diff options
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/mame/ui/inputmap.cpp | 14 | ||||
-rw-r--r-- | src/frontend/mame/ui/inputmap.h | 1 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/frontend/mame/ui/inputmap.cpp b/src/frontend/mame/ui/inputmap.cpp index 16c91c5cb89..a740fcfc720 100644 --- a/src/frontend/mame/ui/inputmap.cpp +++ b/src/frontend/mame/ui/inputmap.cpp @@ -295,9 +295,16 @@ void menu_input::handle() { // if UI_CANCEL is pressed, abort pollingitem = nullptr; - record_next = false; - toggle_none_default(item->seq, starting_seq, *item->defseq); - seqchangeditem = item; + if (machine().input().seq_poll_final() == init_poll_seq) + { + record_next = false; + toggle_none_default(item->seq, starting_seq, *item->defseq); + seqchangeditem = item; + } + else + { + invalidate = true; + } } else if (machine().input().seq_poll()) { @@ -319,6 +326,7 @@ void menu_input::handle() lastitem = item; starting_seq = item->seq; machine().input().seq_poll_start((item->type == INPUT_TYPE_ANALOG) ? ITEM_CLASS_ABSOLUTE : ITEM_CLASS_SWITCH, record_next ? &item->seq : nullptr); + init_poll_seq = machine().input().seq_poll_final(); invalidate = true; break; diff --git a/src/frontend/mame/ui/inputmap.h b/src/frontend/mame/ui/inputmap.h index 4c6064f037b..bd96bbe7edc 100644 --- a/src/frontend/mame/ui/inputmap.h +++ b/src/frontend/mame/ui/inputmap.h @@ -70,6 +70,7 @@ private: input_item_data * lastitem; bool record_next; input_seq starting_seq; + input_seq init_poll_seq; virtual void custom_render(void *selectedref, float top, float bottom, float x1, float y1, float x2, float y2) override; virtual void handle() override; |