From dc863c8f317134258b004c5e41e0fc611196020a Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 11 Jan 2004 02:28:10 +0000 Subject: [PATCH] fix multiselect + options icon crash --- stepmania/src/OptionIcon.cpp | 3 +- stepmania/src/ScreenOptions.cpp | 2 ++ stepmania/src/ScreenOptionsMaster.cpp | 52 ++++++++++++++++----------- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/stepmania/src/OptionIcon.cpp b/stepmania/src/OptionIcon.cpp index 3bed2a90a2..d9d9535d10 100644 --- a/stepmania/src/OptionIcon.cpp +++ b/stepmania/src/OptionIcon.cpp @@ -58,7 +58,8 @@ void OptionIcon::Load( PlayerNumber pn, CString sText, bool bHeader ) sText.Replace( " ", "\n" ); bool bVacant = (sText==""); - m_spr.SetState( pn*3 + (bHeader?0:(bVacant?1:2)) ); + int iState = pn*3 + (bHeader?0:(bVacant?1:2)); + m_spr.SetState( iState ); m_text.SetText( bHeader ? "" : sText ); m_text.SetZoom( TEXT_ZOOM ); diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index b0df9acfff..45febdc7a0 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -1113,6 +1113,8 @@ void ScreenOptions::MenuStart( PlayerNumber pn, const InputEventType type ) m_SoundToggleOn.Play(); else m_SoundToggleOff.Play(); + PositionUnderlines(); + RefreshIcons(); } else { diff --git a/stepmania/src/ScreenOptionsMaster.cpp b/stepmania/src/ScreenOptionsMaster.cpp index 7ef9098d3e..547ce005d9 100644 --- a/stepmania/src/ScreenOptionsMaster.cpp +++ b/stepmania/src/ScreenOptionsMaster.cpp @@ -598,35 +598,45 @@ void ScreenOptionsMaster::RefreshIcons() Row &row = *m_Rows[i]; const OptionRowData &data = row.m_RowDef; - int iSelection = row.GetOneSelection((PlayerNumber)p); - if( iSelection >= (int)data.choices.size() ) + // find first selection and whether multiple are selected + int iFirstSelection = -1; + bool bMultipleSelected = false; + for( int j=0; j