GUI: step play fixes

This commit is contained in:
tildearrow 2023-09-20 16:16:25 -05:00
parent 0c7d0bc32b
commit 478c3ecb57
3 changed files with 13 additions and 6 deletions

View file

@ -3930,11 +3930,13 @@ bool FurnaceGUI::loop() {
int nextPlayOrder=0;
int nextOldRow=0;
e->getPlayPos(nextPlayOrder,nextOldRow);
oldRowChanged=false;
playOrder=nextPlayOrder;
if (followPattern) {
curOrder=playOrder;
}
if (e->isPlaying()) {
if (oldRow!=nextOldRow) oldRowChanged=true;
oldRow=nextOldRow;
}
@ -7110,6 +7112,8 @@ FurnaceGUI::FurnaceGUI():
exitDisabledTimer(0),
soloTimeout(0.0f),
exportFadeOut(5.0),
newSongFirstFrame(false),
oldRowChanged(false),
editControlsOpen(true),
ordersOpen(true),
insListOpen(true),

View file

@ -1816,7 +1816,7 @@ class FurnaceGUI {
double exportFadeOut;
bool newSongFirstFrame;
bool newSongFirstFrame, oldRowChanged;
bool editControlsOpen, ordersOpen, insListOpen, songInfoOpen, patternOpen, insEditOpen;
bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen;
bool mixerOpen, debugOpen, inspectorOpen, oscOpen, volMeterOpen, statsOpen, compatFlagsOpen;

View file

@ -377,11 +377,14 @@ void FurnaceGUI::drawPattern() {
bool inhibitMenu=false;
if (e->isPlaying() && followPattern && (!e->isStepping() || pendingStepUpdate)) {
cursor.y=oldRow;
if (selStart.xCoarse==selEnd.xCoarse && selStart.xFine==selEnd.xFine && selStart.y==selEnd.y && !selecting) {
selStart=cursor;
selEnd=cursor;
if (e->isPlaying() && followPattern) {
if (oldRowChanged || !e->isStepping()) {
if (e->isStepping()) pendingStepUpdate=1;
cursor.y=oldRow;
if (selStart.xCoarse==selEnd.xCoarse && selStart.xFine==selEnd.xFine && selStart.y==selEnd.y && !selecting) {
selStart=cursor;
selEnd=cursor;
}
}
}
demandX=0;