From 2b48739936f24ebd3fd1c85f4a51ea6581996fe9 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Thu, 24 Jul 2025 17:32:14 -0500 Subject: [PATCH] now fix moveSelected issue #1991 --- src/gui/editing.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/gui/editing.cpp b/src/gui/editing.cpp index cafd1c4d7..4558b0cec 100644 --- a/src/gui/editing.cpp +++ b/src/gui/editing.cpp @@ -2051,8 +2051,6 @@ void FurnaceGUI::moveSelected(int x, int y) { selStartOld=selStart; selEndOld=selEnd; - prepareUndo(GUI_UNDO_PATTERN_DRAG); - // move selection DETERMINE_FIRST_LAST; @@ -2134,6 +2132,20 @@ void FurnaceGUI::moveSelected(int x, int y) { return; } + int firstOrder=e->curSubSong->ordersLen; + int lastOrder=0; + + if (selStartNew.orderlastOrder) 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 String c=doCopy(true,false,selStart,selEnd); @@ -2147,7 +2159,7 @@ void FurnaceGUI::moveSelected(int x, int y) { cursor=selStart; 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() {