diff --git a/Docs/Changelog_sm-ssc.txt b/Docs/Changelog_sm-ssc.txt index 5ddf7cd01c..91c8df528d 100644 --- a/Docs/Changelog_sm-ssc.txt +++ b/Docs/Changelog_sm-ssc.txt @@ -22,6 +22,8 @@ sm-ssc v1.2.4 | 20110??? * [ScreenEdit] Add a metric to switch Ctrl+Up and Ctrl+Down. This is for easier compatibility with prior versions of SM. It defaults to false. [Wolfman2000] +* [ScreenEdit] Fix bug number 65, where Steps disappeared if they were + involved with the Compress or Expand options. [Wolfman2000] 20110316 -------- diff --git a/src/NoteDataUtil.cpp b/src/NoteDataUtil.cpp index d8a39396d1..a20e846c7b 100644 --- a/src/NoteDataUtil.cpp +++ b/src/NoteDataUtil.cpp @@ -2229,13 +2229,12 @@ void NoteDataUtil::AddTapAttacks( NoteData &nd, Song* pSong ) } } -#if 0 // undo this if ScaleRegion breaks more things than it fixes void NoteDataUtil::Scale( NoteData &nd, float fScale ) { ASSERT( fScale > 0 ); NoteData temp; - temp.CopyAll( &nd ); + temp.CopyAll( nd ); nd.ClearAll(); for( int r=0; r<=temp.GetLastRow(); r++ ) @@ -2253,7 +2252,6 @@ void NoteDataUtil::Scale( NoteData &nd, float fScale ) } } } -#endif void NoteDataUtil::ScaleRegion( NoteData &nd, float fScale, int iStartIndex, int iEndIndex ) { diff --git a/src/NoteDataUtil.h b/src/NoteDataUtil.h index a930af6547..f92043c9ff 100644 --- a/src/NoteDataUtil.h +++ b/src/NoteDataUtil.h @@ -149,9 +149,8 @@ namespace NoteDataUtil int iStartIndex = 0, int iEndIndex = MAX_NOTE_ROW ); void AddTapAttacks( NoteData &nd, Song* pSong ); - // void Scale( NoteData &nd, float fScale ); + void Scale( NoteData &nd, float fScale ); void ScaleRegion( NoteData &nd, float fScale, int iStartIndex = 0, int iEndIndex = MAX_NOTE_ROW ); - inline void Scale( NoteData &nd, float fScale ) { NoteDataUtil::ScaleRegion(nd, fScale); } void InsertRows( NoteData &nd, int iStartIndex, int iRowsToShift ); void DeleteRows( NoteData &nd, int iStartIndex, int iRowsToShift ); diff --git a/src/ScreenEdit.cpp b/src/ScreenEdit.cpp index 4a25207d5e..e572dbd0bb 100644 --- a/src/ScreenEdit.cpp +++ b/src/ScreenEdit.cpp @@ -3480,10 +3480,11 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector &iAns m_NoteFieldEdit.m_iEndMarker = iNewClipboardEndRow; + float fPriorBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(m_NoteFieldEdit.m_iBeginMarker - 1) ); float fOldBPM = m_pSong->GetBPMAtBeat( NoteRowToBeat(m_NoteFieldEdit.m_iBeginMarker) ); float fNewBPM = fOldBPM * fScale; m_pSong->m_Timing.SetBPMAtRow( m_NoteFieldEdit.m_iBeginMarker, fNewBPM ); - m_pSong->m_Timing.SetBPMAtRow( iNewClipboardEndRow, fOldBPM ); + m_pSong->m_Timing.SetBPMAtRow( iNewClipboardEndRow, fPriorBPM ); } break; case play: