From e78f2f63f71e07557e4884af5ffde1fcb39f12d3 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Sat, 18 Aug 2018 12:39:28 -0400 Subject: [PATCH] Qt: fix changing of double spinbox values --- ui/drivers/qt/shaderparamsdialog.cpp | 42 +++++++++++++++++++++------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/ui/drivers/qt/shaderparamsdialog.cpp b/ui/drivers/qt/shaderparamsdialog.cpp index 6ece4fb62d..3e4d712acd 100644 --- a/ui/drivers/qt/shaderparamsdialog.cpp +++ b/ui/drivers/qt/shaderparamsdialog.cpp @@ -586,7 +586,6 @@ void ShaderParamsDialog::onShaderParamSpinBoxValueChanged(int value) QSlider *slider = NULL; struct video_shader *menu_shader = NULL; struct video_shader *video_shader = NULL; - double newValue = 0.0; getShaders(&menu_shader, &video_shader); @@ -612,6 +611,8 @@ void ShaderParamsDialog::onShaderParamSpinBoxValueChanged(int value) if (ok) { + double newValue = 0.0; + if (menu_shader) { struct video_shader_parameter *param = &menu_shader->parameters[parameter]; @@ -643,8 +644,10 @@ void ShaderParamsDialog::onShaderParamDoubleSpinBoxValueChanged(double value) QVariant sliderVariant; QVariant paramVariant; QSlider *slider = NULL; - struct video_shader_parameter *param = NULL; - double newValue = 0.0; + struct video_shader *menu_shader = NULL; + struct video_shader *video_shader = NULL; + + getShaders(&menu_shader, &video_shader); if (!doubleSpinBox) return; @@ -663,15 +666,34 @@ void ShaderParamsDialog::onShaderParamDoubleSpinBoxValueChanged(double value) if (paramVariant.isValid()) { - param = paramVariant.value(); + bool ok = false; + int parameter = paramVariant.toInt(&ok); - if (param) + if (ok) { - param->current = value; - newValue = MainWindow::lerp(param->minimum, param->maximum, 0, 100, param->current); - slider->blockSignals(true); - slider->setValue(newValue); - slider->blockSignals(false); + double newValue = 0.0; + + if (menu_shader) + { + struct video_shader_parameter *param = &menu_shader->parameters[parameter]; + + param->current = value; + newValue = MainWindow::lerp(param->minimum, param->maximum, 0, 100, param->current); + slider->blockSignals(true); + slider->setValue(newValue); + slider->blockSignals(false); + } + + if (video_shader) + { + struct video_shader_parameter *param = &video_shader->parameters[parameter]; + + param->current = value; + newValue = MainWindow::lerp(param->minimum, param->maximum, 0, 100, param->current); + slider->blockSignals(true); + slider->setValue(newValue); + slider->blockSignals(false); + } } } }