GUI: new pattern cursor logic, part 4

fix a couple bugs
This commit is contained in:
tildearrow 2025-06-28 03:49:15 -05:00
parent 9646eb9028
commit 608dc375ea
3 changed files with 4 additions and 7 deletions

View file

@ -247,7 +247,7 @@ void FurnaceGUI::finishSelection() {
// change order if necessary
if (curOrder!=cursor.order) {
setOrder(cursor.order);
curOrder=cursor.order;
updateScroll(cursor.y);
}

View file

@ -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()) {

View file

@ -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);
}