GUI: new pattern cursor logic, part 9

fix movement-related bugs
This commit is contained in:
tildearrow 2025-07-03 19:57:46 -05:00
parent 7a4582d5bd
commit 62c5fe1abd

View file

@ -329,8 +329,10 @@ void FurnaceGUI::moveCursor(int x, int y, bool select) {
if (!e->isPlaying() || !followPattern) { if (!e->isPlaying() || !followPattern) {
if (curOrder<(e->curSubSong->ordersLen-1)) { if (curOrder<(e->curSubSong->ordersLen-1)) {
setOrder(curOrder+1); setOrder(curOrder+1);
cursor.order=curOrder;
} else if (settings.wrapVertical==3) { } else if (settings.wrapVertical==3) {
setOrder(0); setOrder(0);
cursor.order=curOrder;
} else { } else {
cursor.y=e->curSubSong->patLen-1; cursor.y=e->curSubSong->patLen-1;
} }
@ -353,8 +355,10 @@ void FurnaceGUI::moveCursor(int x, int y, bool select) {
if (!e->isPlaying() || !followPattern) { if (!e->isPlaying() || !followPattern) {
if (curOrder>0) { if (curOrder>0) {
setOrder(curOrder-1); setOrder(curOrder-1);
cursor.order=curOrder;
} else if (settings.wrapVertical==3) { } else if (settings.wrapVertical==3) {
setOrder(e->curSubSong->ordersLen-1); setOrder(e->curSubSong->ordersLen-1);
cursor.order=curOrder;
} else { } else {
cursor.y=0; cursor.y=0;
} }
@ -499,6 +503,7 @@ void FurnaceGUI::editAdvance() {
if (curOrder<(e->curSubSong->ordersLen-1)) { if (curOrder<(e->curSubSong->ordersLen-1)) {
cursor.y-=e->curSubSong->patLen; cursor.y-=e->curSubSong->patLen;
setOrder(curOrder+1); setOrder(curOrder+1);
cursor.order=curOrder;
} else { } else {
cursor.y=e->curSubSong->patLen-1; cursor.y=e->curSubSong->patLen-1;
} }
@ -510,6 +515,7 @@ void FurnaceGUI::editAdvance() {
} else { } else {
setOrder(0); setOrder(0);
} }
cursor.order=curOrder;
break; break;
default: // don't wrap default: // don't wrap
cursor.y=e->curSubSong->patLen-1; cursor.y=e->curSubSong->patLen-1;