diff --git a/sc2/ChangeLog b/sc2/ChangeLog index c9a4313d9..49d12270a 100644 --- a/sc2/ChangeLog +++ b/sc2/ChangeLog @@ -1,4 +1,5 @@ Changes towards version 0.7: +- Preserve character case when editing with joystick (bug #1080) - Alex - Fixed misaligned cargo count (bug #1092) - Coredev - Fixed the network SuperMelee team configuration protocol - SvdB - Fixed fuel reserve bounds checks - SvdB diff --git a/sc2/src/uqm/getchar.c b/sc2/src/uqm/getchar.c index 8c90940c3..3f1f6ed0e 100644 --- a/sc2/src/uqm/getchar.c +++ b/sc2/src/uqm/getchar.c @@ -313,13 +313,22 @@ DoTextEntry (TEXTENTRY_STATE *pTES) joy_char_t newch; joy_char_t cmpch; int i; + BOOLEAN curCharUpper; pTES->JoystickMode = TRUE; if (len) + { // changing an existing character ReadOneChar (&ch, pStr); + curCharUpper = !JoyCharIsLower (&ch, pTES); + } else + { // adding a new character ch = pTES->JoyAlpha[0]; + // new characters will have case determined by the + // currently selected register + curCharUpper = pTES->UpperRegister; + } newch = ch; JoyCharToUpper (&cmpch, &ch, pTES); @@ -347,7 +356,7 @@ DoTextEntry (TEXTENTRY_STATE *pTES) { if (len) { // single char change - if (JoyCharIsLower (&newch, pTES)) + if (!curCharUpper) JoyCharToUpper (&newch, &newch, pTES); else JoyCharToLower (&newch, &newch, pTES); @@ -359,7 +368,7 @@ DoTextEntry (TEXTENTRY_STATE *pTES) } else { // check register - if (pTES->UpperRegister) + if (curCharUpper) JoyCharToUpper (&newch, &newch, pTES); else JoyCharToLower (&newch, &newch, pTES);