diff --git a/src/gui/cursor.cpp b/src/gui/cursor.cpp index 506aa2026..9ba73a647 100644 --- a/src/gui/cursor.cpp +++ b/src/gui/cursor.cpp @@ -247,7 +247,7 @@ void FurnaceGUI::finishSelection() { // change order if necessary if (curOrder!=cursor.order) { - setOrder(cursor.order); + curOrder=cursor.order; updateScroll(cursor.y); } diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 8225c9c65..efa4065c0 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4407,7 +4407,7 @@ bool FurnaceGUI::loop() { e->getPlayPos(nextPlayOrder,nextOldRow); oldRowChanged=false; playOrder=nextPlayOrder; - if (followPattern) { + if (followPattern && !e->isStepping()) { curOrder=playOrder; } if (e->isPlaying()) { diff --git a/src/gui/pattern.cpp b/src/gui/pattern.cpp index 90f956939..3a7141a68 100644 --- a/src/gui/pattern.cpp +++ b/src/gui/pattern.cpp @@ -539,21 +539,18 @@ void FurnaceGUI::drawPattern() { // wrap around and go to previous/next pattern if we're about to go beyond the view if (newScroll<0.0f && curOrder>0) { ImGui::SetScrollY(ImGui::GetScrollMaxY()+newScroll); - setOrder(curOrder-1); + curOrder--; } else if (newScroll>ImGui::GetScrollMaxY() && curOrder<(e->curSubSong->ordersLen-1)) { ImGui::SetScrollY(newScroll-ImGui::GetScrollMaxY()); - setOrder(curOrder+1); + curOrder++; } else { ImGui::SetScrollY(newScroll); } // select in empty space - logV("T: %d,%d B: %d,%d",topMostOrder,topMostRow,bottomMostOrder,bottomMostRow); if (nextAddScroll>0.0f) { - logW("DOWN"); updateSelection(selEnd.xCoarse,selEnd.xFine,bottomMostRow,bottomMostOrder); } else { - logW("UP"); updateSelection(selEnd.xCoarse,selEnd.xFine,topMostRow,topMostOrder); }