From d6a3e1446fd7973e613b1632815b9dbfe31fe80e Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 18 Jun 2023 19:08:42 +0100 Subject: [PATCH] Improve handling of M_StartMessage strings The author of this commit ran into an issue while testing previous changes where a Menu Message had MM_NOTHING but a Yes and No string, leading to misleading appearances. This prevents that footgun from happening again. --- src/menus/transient/message-box.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/menus/transient/message-box.c b/src/menus/transient/message-box.c index 873d5838e..1e5de84b9 100644 --- a/src/menus/transient/message-box.c +++ b/src/menus/transient/message-box.c @@ -85,15 +85,19 @@ void M_StartMessage(const char *header, const char *string, void (*routine)(INT3 menumessage.flags = MM_NOTHING; } - if (menumessage.flags == MM_YESNO && !defaultstr) + // Set action strings + switch (menumessage.flags) { - menumessage.defaultstr = "No"; - menumessage.confirmstr = "Yes"; - } - else - { - menumessage.defaultstr = defaultstr ? defaultstr : "OK"; - menumessage.confirmstr = confirmstr; + // Send 1 to the routine if we're pressing A, 2 if B/X, 0 otherwise. + case MM_YESNO: + menumessage.defaultstr = defaultstr ? defaultstr : "No"; + menumessage.confirmstr = confirmstr ? confirmstr : "Yes"; + break; + + default: + menumessage.defaultstr = defaultstr ? defaultstr : "OK"; + menumessage.confirmstr = NULL; + break; } // event routine