diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index d71de81fc..515a4b8ac 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -568,7 +568,10 @@ void FurnaceGUI::drawFindReplace() { makeCursorUndo(); e->changeSongP(i.subsong); if (e->isPlaying()) { - followPattern=false; + if (followPattern) { + wasFollowing=followPattern; + followPattern=false; + } } else { e->setOrder(i.order); } diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 5f0cebe93..78d48c6f6 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1186,6 +1186,10 @@ void FurnaceGUI::play(int row) { memset(chanOscBright,0,DIV_MAX_CHANS*sizeof(float)); e->walkSong(loopOrder,loopRow,loopEnd); memset(lastIns,-1,sizeof(int)*DIV_MAX_CHANS); + if (wasFollowing) { + followPattern=true; + wasFollowing=false; + } if (followPattern) makeCursorUndo(); if (!followPattern) e->setOrder(curOrder); if (row>=0) { @@ -1225,6 +1229,10 @@ void FurnaceGUI::stop() { } updateScroll(cursor.y); } + if (wasFollowing) { + followPattern = true; + wasFollowing = false; + } } void FurnaceGUI::previewNote(int refChan, int note, bool autoNote) { diff --git a/src/gui/gui.h b/src/gui/gui.h index 6f9692c6e..8d4b065b8 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2365,7 +2365,7 @@ class FurnaceGUI { float clockMetroTick[16]; SelectionPoint selStart, selEnd, cursor, cursorDrag, dragStart, dragEnd; - bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; + bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, wasFollowing, changeAllOrders, mobileUI; bool collapseWindow, demandScrollX, fancyPattern, firstFrame, tempoView, waveHex, waveSigned, waveGenVisible, lockLayout, editOptsVisible, latchNibble, nonLatchNibble; bool keepLoopAlive, keepGrooveAlive, orderScrollLocked, orderScrollTolerance, dragMobileMenu, dragMobileEditButton, wantGrooveListFocus; bool mobilePatSel;