From b64c06dd4d259115c04ad3754108926009346a3a Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 31 Jan 2025 17:29:51 -0500 Subject: [PATCH] GUI: add more options for selection drag ability to copy by dragging selection --- src/engine/platform/msm6258.cpp | 1 + src/engine/platform/msm6258.h | 1 + src/gui/cursor.cpp | 4 ++-- src/gui/editing.cpp | 6 +++--- src/gui/gui.h | 2 +- src/gui/settings.cpp | 14 +++++++++++++- 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/engine/platform/msm6258.cpp b/src/engine/platform/msm6258.cpp index 258e36832..84d529c8f 100644 --- a/src/engine/platform/msm6258.cpp +++ b/src/engine/platform/msm6258.cpp @@ -409,6 +409,7 @@ void DivPlatformMSM6258::setFlags(const DivConfig& flags) { for (int i=0; i<1; i++) { oscBuf[i]->rate=rate; } + variableRate=flags.getBool("variableRate",false); } int DivPlatformMSM6258::init(DivEngine* p, int channels, int sugRate, const DivConfig& flags) { diff --git a/src/engine/platform/msm6258.h b/src/engine/platform/msm6258.h index acfdd5ad1..de7191919 100644 --- a/src/engine/platform/msm6258.h +++ b/src/engine/platform/msm6258.h @@ -51,6 +51,7 @@ class DivPlatformMSM6258: public DivDispatch { unsigned char sampleBank, msmPan, msmDivider, rateSel, msmClock, clockSel; signed char msmDividerCount, msmClockCount; bool updateSampleFreq; + bool variableRate; short msmOut; int delay, updateOsc, sample, samplePos; diff --git a/src/gui/cursor.cpp b/src/gui/cursor.cpp index fe034ec01..98e08cc5a 100644 --- a/src/gui/cursor.cpp +++ b/src/gui/cursor.cpp @@ -43,7 +43,7 @@ void FurnaceGUI::startSelection(int xCoarse, int xFine, int y, bool fullRow) { } } - if ((settings.dragMovesSelection==1 || (settings.dragMovesSelection==2 && (ImGui::IsKeyDown(ImGuiKey_LeftCtrl) || ImGui::IsKeyDown(ImGuiKey_RightCtrl)))) && !fullRow) { + if (((settings.dragMovesSelection==1 || settings.dragMovesSelection==3 || settings.dragMovesSelection==5) || ((settings.dragMovesSelection==2 || settings.dragMovesSelection==4) && (ImGui::IsKeyDown(ImGuiKey_LeftCtrl) || ImGui::IsKeyDown(ImGuiKey_RightCtrl)))) && !fullRow) { if (xCoarse>=selStart.xCoarse && (xFine>=selStart.xFine || xCoarse>selStart.xCoarse) && y>=selStart.y && xCoarse<=selEnd.xCoarse && (xFine<=selEnd.xFine || xCoarse