now fix moveSelected

issue #1991
This commit is contained in:
tildearrow 2025-07-24 17:32:14 -05:00
parent 10a6e59820
commit 2b48739936

View file

@ -2051,8 +2051,6 @@ void FurnaceGUI::moveSelected(int x, int y) {
selStartOld=selStart; selStartOld=selStart;
selEndOld=selEnd; selEndOld=selEnd;
prepareUndo(GUI_UNDO_PATTERN_DRAG);
// move selection // move selection
DETERMINE_FIRST_LAST; DETERMINE_FIRST_LAST;
@ -2134,6 +2132,20 @@ void FurnaceGUI::moveSelected(int x, int y) {
return; return;
} }
int firstOrder=e->curSubSong->ordersLen;
int lastOrder=0;
if (selStartNew.order<firstOrder) firstOrder=selStartNew.order;
if (selEndNew.order<firstOrder) firstOrder=selEndNew.order;
if (selStart.order<firstOrder) firstOrder=selStart.order;
if (selStartNew.order>lastOrder) lastOrder=selStartNew.order;
if (selEndNew.order>lastOrder) lastOrder=selEndNew.order;
if (selStart.order>lastOrder) lastOrder=selStart.order;
logV("UR: %d - %d",firstOrder,lastOrder);
prepareUndo(GUI_UNDO_PATTERN_DRAG,UndoRegion(firstOrder,0,0,lastOrder,e->getTotalChannelCount()-1,e->curSubSong->patLen-1));
// copy and clear // copy and clear
String c=doCopy(true,false,selStart,selEnd); String c=doCopy(true,false,selStart,selEnd);
@ -2147,7 +2159,7 @@ void FurnaceGUI::moveSelected(int x, int y) {
cursor=selStart; cursor=selStart;
doPaste(GUI_PASTE_MODE_OVERFLOW,0,false,c); doPaste(GUI_PASTE_MODE_OVERFLOW,0,false,c);
makeUndo(GUI_UNDO_PATTERN_DRAG); makeUndo(GUI_UNDO_PATTERN_DRAG,UndoRegion(firstOrder,0,0,lastOrder,e->getTotalChannelCount()-1,e->curSubSong->patLen-1));
} }
void FurnaceGUI::doUndo() { void FurnaceGUI::doUndo() {