From 03795e3d912671b2c2f4cc460a46f5bbb033e4d6 Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Mon, 9 Oct 2017 07:59:23 -0400 Subject: [PATCH] Added momentary randomize() disable on ParamWidget --- include/app.hpp | 4 ++++ src/app/Knob.cpp | 2 ++ src/app/ParamWidget.cpp | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/app.hpp b/include/app.hpp index 29d4e18e..f96e5ac4 100644 --- a/include/app.hpp +++ b/include/app.hpp @@ -168,6 +168,10 @@ struct Light : TransparentWidget { struct ParamWidget : OpaqueWidget, QuantityWidget { Module *module = NULL; int paramId; + /** Used to momentarily disable value randomization + To permanently disable or change randomization behavior, override the randomize() method instead of changing this. + */ + bool randomizable = true; json_t *toJson(); void fromJson(json_t *rootJ); diff --git a/src/app/Knob.cpp b/src/app/Knob.cpp index 52b45cb3..d8961c53 100644 --- a/src/app/Knob.cpp +++ b/src/app/Knob.cpp @@ -12,6 +12,7 @@ namespace rack { void Knob::onDragStart() { guiCursorLock(); + randomizable = false; } void Knob::onDragMove(Vec mouseRel) { @@ -23,6 +24,7 @@ void Knob::onDragMove(Vec mouseRel) { void Knob::onDragEnd() { guiCursorUnlock(); + randomizable = true; } void Knob::onChange() { diff --git a/src/app/ParamWidget.cpp b/src/app/ParamWidget.cpp index bad76137..5ebe765b 100644 --- a/src/app/ParamWidget.cpp +++ b/src/app/ParamWidget.cpp @@ -15,7 +15,8 @@ void ParamWidget::fromJson(json_t *rootJ) { } void ParamWidget::randomize() { - setValue(rescalef(randomf(), 0.0, 1.0, minValue, maxValue)); + if (randomizable) + setValue(rescalef(randomf(), 0.0, 1.0, minValue, maxValue)); } void ParamWidget::onMouseDownOpaque(int button) {