diff --git a/src/app/ParamWidget.cpp b/src/app/ParamWidget.cpp index 083e9bba..2f58a6e3 100644 --- a/src/app/ParamWidget.cpp +++ b/src/app/ParamWidget.cpp @@ -274,7 +274,8 @@ void ParamWidget::createContextMenu() { menu->addChild(paramLabel); if (switchQuantity) { - int index = (int) std::floor(pq->getValue()); + float minValue = pq->getMinValue(); + int index = (int) std::floor(pq->getValue() - minValue); int numStates = switchQuantity->labels.size(); for (int i = 0; i < numStates; i++) { std::string label = switchQuantity->labels[i]; @@ -282,7 +283,7 @@ void ParamWidget::createContextMenu() { paramValueItem->text = label; paramValueItem->rightText = CHECKMARK(i == index); paramValueItem->paramWidget = this; - paramValueItem->value = i; + paramValueItem->value = minValue + i; menu->addChild(paramValueItem); } if (numStates > 0) { diff --git a/src/engine/ParamQuantity.cpp b/src/engine/ParamQuantity.cpp index 94ccb26b..0b0b2357 100644 --- a/src/engine/ParamQuantity.cpp +++ b/src/engine/ParamQuantity.cpp @@ -177,7 +177,7 @@ void ParamQuantity::fromJson(json_t* rootJ) { std::string SwitchQuantity::getDisplayValueString() { - int index = (int) std::floor(getValue()); + int index = (int) std::floor(getValue() - getMinValue()); if (!(0 <= index && index < (int) labels.size())) return ""; return labels[index]; @@ -191,7 +191,7 @@ void SwitchQuantity::setDisplayValueString(std::string s) { if (it == labels.end()) return; int index = std::distance(labels.begin(), it); - setValue(index); + setValue(getMinValue() + index); }