diff --git a/stepmania/src/ScreenNameEntryTraditional.cpp b/stepmania/src/ScreenNameEntryTraditional.cpp index 4b50b54feb..d70542d8a7 100644 --- a/stepmania/src/ScreenNameEntryTraditional.cpp +++ b/stepmania/src/ScreenNameEntryTraditional.cpp @@ -622,6 +622,8 @@ void ScreenNameEntryTraditional::UpdateSelectionText( int pn ) void ScreenNameEntryTraditional::MenuStart( PlayerNumber pn, const InputEventType type ) { + /* The screen may have started out with nobody entering, in which case we're + * just showing scores and the first Start press moves on. */ if( !AnyStillEntering() ) { AllFinished(); @@ -643,16 +645,7 @@ void ScreenNameEntryTraditional::MenuStart( PlayerNumber pn, const InputEventTyp break; case CHAR_BACK: - if( !m_sSelection[pn].size() ) - { - m_soundInvalid.Play(); - break; - } - - m_sSelection[pn].erase( m_sSelection[pn].size()-1, 1 ); - UpdateSelectionText( pn ); - m_soundKey.Play(); - + Backspace( pn ); break; default: @@ -673,6 +666,16 @@ void ScreenNameEntryTraditional::MenuStart( PlayerNumber pn, const InputEventTyp } } +void ScreenNameEntryTraditional::MenuSelect( PlayerNumber pn, const InputEventType type ) +{ + if( !m_bStillEnteringName[pn] ) + return; // ignore + if( type != IET_FIRST_PRESS ) + return; // ignore + + Backspace( pn ); +} + void ScreenNameEntryTraditional::SelectChar( PlayerNumber pn, int c ) { FOREACH( int, m_AlphabetLetter[pn], letter ) @@ -687,6 +690,19 @@ void ScreenNameEntryTraditional::SelectChar( PlayerNumber pn, int c ) ASSERT( false ); // character not found } +void ScreenNameEntryTraditional::Backspace( PlayerNumber pn ) +{ + if( !m_sSelection[pn].size() ) + { + m_soundInvalid.Play(); + return; + } + + m_sSelection[pn].erase( m_sSelection[pn].size()-1, 1 ); + UpdateSelectionText( pn ); + m_soundKey.Play(); +} + void ScreenNameEntryTraditional::MenuLeft( PlayerNumber pn, const InputEventType type ) { if( !m_bStillEnteringName[pn] || IsTransitioning() ) diff --git a/stepmania/src/ScreenNameEntryTraditional.h b/stepmania/src/ScreenNameEntryTraditional.h index 21c37346e4..b62077eb3a 100644 --- a/stepmania/src/ScreenNameEntryTraditional.h +++ b/stepmania/src/ScreenNameEntryTraditional.h @@ -52,6 +52,7 @@ public: void Input( const DeviceInput& DeviceI, const InputEventType type, const GameInput &GameI, const MenuInput &MenuI, const StyleInput &StyleI ); void MenuStart( PlayerNumber pn, const InputEventType type ); + void MenuSelect( PlayerNumber pn, const InputEventType type ); void MenuLeft( PlayerNumber pn, const InputEventType type ); void MenuRight( PlayerNumber pn, const InputEventType type ); @@ -63,6 +64,7 @@ private: void UpdateSelectionText( int pn ); void ChangeDisplayedFeat(); void SelectChar( PlayerNumber pn, int c ); + void Backspace( PlayerNumber pn ); ThemeMetric FOV; ThemeMetric ALPHABET_GAP_X;