GUI: new pattern cursor logic, part 16

fix a couple order change-related problems
This commit is contained in:
tildearrow 2025-07-05 04:19:18 -05:00
parent 5928e57203
commit 853111b99d
3 changed files with 41 additions and 0 deletions

View file

@ -1793,6 +1793,13 @@ void FurnaceGUI::doAction(int what) {
prepareUndo(GUI_UNDO_CHANGE_ORDER);
e->addOrder(curOrder,false,false);
curOrder=e->getOrder();
if (selStart.order==cursor.order) {
selStart.order=curOrder;
}
if (selEnd.order==cursor.order) {
selEnd.order=curOrder;
}
cursor.order=curOrder;
makeUndo(GUI_UNDO_CHANGE_ORDER);
break;
case GUI_ACTION_ORDERS_DUPLICATE:
@ -1827,6 +1834,13 @@ void FurnaceGUI::doAction(int what) {
if (curOrder>=e->curSubSong->ordersLen) {
curOrder=e->curSubSong->ordersLen-1;
e->setOrder(curOrder);
if (selStart.order==cursor.order) {
selStart.order=curOrder;
}
if (selEnd.order==cursor.order) {
selEnd.order=curOrder;
}
cursor.order=curOrder;
}
makeUndo(GUI_UNDO_CHANGE_ORDER);
break;
@ -1835,6 +1849,13 @@ void FurnaceGUI::doAction(int what) {
e->moveOrderUp(curOrder);
if (settings.cursorFollowsOrder) {
e->setOrder(curOrder);
if (selStart.order==cursor.order) {
selStart.order=curOrder;
}
if (selEnd.order==cursor.order) {
selEnd.order=curOrder;
}
cursor.order=curOrder;
}
makeUndo(GUI_UNDO_CHANGE_ORDER);
break;
@ -1843,6 +1864,13 @@ void FurnaceGUI::doAction(int what) {
e->moveOrderDown(curOrder);
if (settings.cursorFollowsOrder) {
e->setOrder(curOrder);
if (selStart.order==cursor.order) {
selStart.order=curOrder;
}
if (selEnd.order==cursor.order) {
selEnd.order=curOrder;
}
cursor.order=curOrder;
}
makeUndo(GUI_UNDO_CHANGE_ORDER);
break;

View file

@ -6401,6 +6401,9 @@ bool FurnaceGUI::loop() {
stop();
e->clearSubSongs();
curOrder=0;
cursor.order=0;
selStart.order=0;
selEnd.order=0;
MARK_MODIFIED;
ImGui::CloseCurrentPopup();
}
@ -6411,6 +6414,9 @@ bool FurnaceGUI::loop() {
});
e->setOrder(0);
curOrder=0;
cursor.order=0;
selStart.order=0;
selEnd.order=0;
MARK_MODIFIED;
ImGui::CloseCurrentPopup();
}
@ -6422,6 +6428,9 @@ bool FurnaceGUI::loop() {
});
e->setOrder(0);
curOrder=0;
cursor.order=0;
selStart.order=0;
selEnd.order=0;
MARK_MODIFIED;
ImGui::CloseCurrentPopup();
}
@ -6530,6 +6539,7 @@ bool FurnaceGUI::loop() {
cursor.xCoarse=0;
cursor.xFine=0;
cursor.y=0;
cursor.order=0;
selStart=cursor;
selEnd=cursor;
curOrder=0;

View file

@ -43,6 +43,7 @@ void FurnaceGUI::drawSubSongs(bool asChild) {
cursor.xCoarse=0;
cursor.xFine=0;
cursor.y=0;
cursor.order=0;
selStart=cursor;
selEnd=cursor;
curOrder=0;
@ -80,6 +81,7 @@ void FurnaceGUI::drawSubSongs(bool asChild) {
cursor.xCoarse=0;
cursor.xFine=0;
cursor.y=0;
cursor.order=0;
selStart=cursor;
selEnd=cursor;
curOrder=0;
@ -101,6 +103,7 @@ void FurnaceGUI::drawSubSongs(bool asChild) {
cursor.xCoarse=0;
cursor.xFine=0;
cursor.y=0;
cursor.order=0;
selStart=cursor;
selEnd=cursor;
curOrder=0;