foxygit / doom Log in
commit b07602b54dfb30d8f708901f41e1f2fce2ed2961
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Mon Oct 28 00:25:41 2013 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Mon Oct 28 00:25:41 2013 +0000

    Fix Vanilla behavior of shift key when entering savegame names in the
    menu (thanks Alexandre Xavier).

    Subversion-branch: /branches/v2-branch
    Subversion-revision: 2723
---
 src/doom/m_menu.c   | 14 ++++++++++++--
 src/strife/m_menu.c | 12 +++++++++++-
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/src/doom/m_menu.c b/src/doom/m_menu.c
index 233fe641..4951d9a6 100644
--- a/src/doom/m_menu.c
+++ b/src/doom/m_menu.c
@@ -1586,9 +1586,19 @@ boolean M_Responder (event_t* ev)
 	    if (savegamestrings[saveSlot][0])
 		M_DoSave(saveSlot);
 	    break;
-
+
 	  default:
-	    // Entering a character - use the 'ch' value, not the key
+            // This is complicated.
+            // Vanilla has a bug where the shift key is ignored when entering
+            // a savegame name. If vanilla_keyboard_mapping is on, we want
+            // to emulate this bug by using 'data1'. But if it's turned off,
+            // it implies the user doesn't care about Vanilla emulation: just
+            // use the correct 'data2'.
+
+            if (vanilla_keyboard_mapping)
+            {
+                ch = key;
+            }

             ch = toupper(ch);

diff --git a/src/strife/m_menu.c b/src/strife/m_menu.c
index 6426232f..e278bc74 100644
--- a/src/strife/m_menu.c
+++ b/src/strife/m_menu.c
@@ -1869,7 +1869,17 @@ boolean M_Responder (event_t* ev)
             break;

         default:
-            // Entering a character - use the 'ch' value, not the key
+            // This is complicated.
+            // Vanilla has a bug where the shift key is ignored when entering
+            // a savegame name. If vanilla_keyboard_mapping is on, we want
+            // to emulate this bug by using 'data1'. But if it's turned off,
+            // it implies the user doesn't care about Vanilla emulation: just
+            // use the correct 'data2'.
+
+            if (vanilla_keyboard_mapping)
+            {
+                ch = key;
+            }

             ch = toupper(ch);