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