From: <sag...@us...> - 2014-03-31 23:05:37
|
Revision: 4000 http://sourceforge.net/p/modplug/code/4000 Author: saga-games Date: 2014-03-31 23:05:27 +0000 (Mon, 31 Mar 2014) Log Message: ----------- [Fix] Pattern tab: When "loop pattern" was enabled, jumping between patterns could still trigger synced samples while playback was paused. [Fix] Pattern tab: Modifying a pattern should now always update other pattern views of the same song properly. [Fix] DefaultTemplate option was looking for the template file in the wrong paths. [Mod] OpenMPT: Version is now 1.23.01.01 Modified Paths: -------------- trunk/OpenMPT/common/versionNumber.h trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h Modified: trunk/OpenMPT/common/versionNumber.h =================================================================== --- trunk/OpenMPT/common/versionNumber.h 2014-03-29 20:40:09 UTC (rev 3999) +++ trunk/OpenMPT/common/versionNumber.h 2014-03-31 23:05:27 UTC (rev 4000) @@ -17,7 +17,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 23 #define VER_MINOR 01 -#define VER_MINORMINOR 00 +#define VER_MINORMINOR 01 //Version string. For example "1.17.02.28" #define MPT_VERSION_STR VER_STRINGIZE(VER_MAJORMAJOR) "." VER_STRINGIZE(VER_MAJOR) "." VER_STRINGIZE(VER_MINOR) "." VER_STRINGIZE(VER_MINORMINOR) Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2014-03-29 20:40:09 UTC (rev 3999) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2014-03-31 23:05:27 UTC (rev 4000) @@ -332,7 +332,7 @@ sndFile.m_PlayState.m_nNextRow = 0; // update channel parameters and play time - m_pModDoc.SetElapsedTime(m_nScrollPos, 0, true); + m_pModDoc.SetElapsedTime(m_nScrollPos, 0, !sndFile.m_SongFlags[SONG_PAUSED | SONG_STEP]); changedPos = true; } else if(m_pParent.GetFollowSong()) Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp 2014-03-29 20:40:09 UTC (rev 3999) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp 2014-03-31 23:05:27 UTC (rev 4000) @@ -220,9 +220,13 @@ } -void CViewPattern::UpdateView(DWORD dwHintMask, CObject *) -//-------------------------------------------------------- +void CViewPattern::UpdateView(DWORD dwHintMask, CObject *hint) +//------------------------------------------------------------ { + if(hint == this) + { + return; + } if(dwHintMask & HINT_MPTOPTIONS) { UpdateColors(); @@ -238,14 +242,17 @@ } const PATTERNINDEX updatePat = (dwHintMask >> HINT_SHIFT_PAT); - if(HintFlagPart(dwHintMask) == HINT_PATTERNDATA && m_nPattern != updatePat && updatePat != 0) + if(HintFlagPart(dwHintMask) == HINT_PATTERNDATA + && m_nPattern != updatePat + && updatePat != 0 + && updatePat != GetNextPattern() + && updatePat != GetPrevPattern()) return; if(dwHintMask & (HINT_MODTYPE|HINT_PATTERNDATA)) { InvalidatePattern(false); - } else - if(dwHintMask & HINT_PATTERNROW) + } else if(dwHintMask & HINT_PATTERNROW) { InvalidateRow(dwHintMask >> HINT_SHIFT_ROW); } Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2014-03-29 20:40:09 UTC (rev 3999) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2014-03-31 23:05:27 UTC (rev 4000) @@ -1033,7 +1033,7 @@ const mpt::PathString templateFile = TrackerSettings::Instance().defaultTemplateFile; if(!templateFile.empty()) { - const mpt::PathString dirs[] = { GetConfigPath(), GetAppDirPath(), mpt::PathString() }; + const mpt::PathString dirs[] = { GetConfigPath() + MPT_PATHSTRING("TemplateModules\\"), GetAppDirPath() + MPT_PATHSTRING("TemplateModules\\"), mpt::PathString() }; for(size_t i = 0; i < CountOf(dirs); i++) { if(Util::sdOs::IsPathFileAvailable(dirs[i] + templateFile, Util::sdOs::FileModeExists)) Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-29 20:40:09 UTC (rev 3999) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2014-03-31 23:05:27 UTC (rev 4000) @@ -389,10 +389,7 @@ if(pModDoc != nullptr) { pModDoc->SetModified(); - if(updateAllViews) - { - pModDoc->UpdateAllViews(this, HINT_PATTERNDATA | (m_nPattern << HINT_SHIFT_PAT), NULL); - } + pModDoc->UpdateAllViews(this, HINT_PATTERNDATA | (m_nPattern << HINT_SHIFT_PAT), updateAllViews ? nullptr : this); } } @@ -1332,7 +1329,7 @@ SetCurrentPattern(m_nPattern); } InvalidatePattern(true); - pModDoc->SetModified(); + SetModified(false); } } break; @@ -1688,7 +1685,7 @@ void CViewPattern::OnMuteFromClick() //---------------------------------- { - OnMuteChannel(false); + OnMuteChannel(m_MenuCursor.GetChannel()); } @@ -3129,7 +3126,7 @@ SetCursorPosition(begin); SetCurSel(destination); InvalidatePattern(); - pModDoc->SetModified(); + SetModified(false); EndWaitCursor(); } @@ -3323,7 +3320,6 @@ PATTERNINDEX pat = undo ? pModDoc->GetPatternUndo().Undo() : pModDoc->GetPatternUndo().Redo(); if(pat < pModDoc->GetSoundFile()->Patterns.Size()) { - pModDoc->SetModified(); if(pat != m_nPattern) { // Find pattern in sequence. @@ -3337,6 +3333,7 @@ { InvalidatePattern(true); } + SetModified(false); SanitizeCursor(); } } @@ -4916,7 +4913,7 @@ pTarget->vol = 0; } - pModDoc->SetModified(); + SetModified(false); if(editPos.pattern == m_nPattern) { @@ -5246,7 +5243,7 @@ if(modified) // Has it really changed? { - pModDoc->SetModified(); + SetModified(false); if(editPos.pattern == m_nPattern) InvalidateCell(sel); else @@ -5444,7 +5441,7 @@ { rowBase[n] = newRow[n]; } - pModDoc->SetModified(); + SetModified(false); InvalidateRow(); UpdateIndicator(); } @@ -5647,6 +5644,28 @@ } +// Get previous pattern in order list +PATTERNINDEX CViewPattern::GetPrevPattern() const +//----------------------------------------------- +{ + const CSoundFile *sndFile = GetSoundFile(); + if(sndFile != nullptr) + { + const ORDERINDEX curOrder = GetCurrentOrder(); + if(curOrder > 0 && m_nPattern == sndFile->Order[curOrder]) + { + const ORDERINDEX nextOrder = sndFile->Order.GetPreviousOrderIgnoringSkips(curOrder); + const PATTERNINDEX nextPat = sndFile->Order[nextOrder]; + if(sndFile->Patterns.IsValidPat(nextPat) && sndFile->Patterns[nextPat].GetNumRows()) + { + return nextPat; + } + } + } + return PATTERNINDEX_INVALID; +} + + // Get follow-up pattern in order list PATTERNINDEX CViewPattern::GetNextPattern() const //----------------------------------------------- @@ -6826,7 +6845,7 @@ if(result) { GetDocument()->SetModified(); - GetDocument()->UpdateAllViews(NULL, HINT_MODSEQUENCE | HINT_PATTERNDATA | (pos.pattern << HINT_SHIFT_PAT), NULL); + GetDocument()->UpdateAllViews(NULL, HINT_MODSEQUENCE | HINT_PATTERNDATA | (pos.pattern << HINT_SHIFT_PAT), nullptr); } return result; Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2014-03-29 20:40:09 UTC (rev 3999) +++ trunk/OpenMPT/mptrack/View_pat.h 2014-03-31 23:05:27 UTC (rev 4000) @@ -317,6 +317,7 @@ int ConstructChord(int note, ModCommand::NOTE (&outNotes)[MPTChord::notesPerChord], ModCommand::NOTE baseNote); void QuantizeRow(PATTERNINDEX &pat, ROWINDEX &row) const; + PATTERNINDEX GetPrevPattern() const; PATTERNINDEX GetNextPattern() const; void SetSpacing(int n); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |