1
0
Fork 0

Fix slider same value check with discrete params

Because the check was done against the normalized value, before
snapping. This required adding `PartialEq` to the `Plain` type.
This commit is contained in:
Robbert van der Helm 2022-03-05 19:51:06 +01:00
parent 03eef2c832
commit 0dd71cf644

View file

@ -55,6 +55,10 @@ impl<'a, P: Param> ParamSlider<'a, P> {
self self
} }
fn plain_value(&self) -> P::Plain {
self.param.plain_value()
}
fn normalized_value(&self) -> f32 { fn normalized_value(&self) -> f32 {
self.param.normalized_value() self.param.normalized_value()
} }
@ -64,12 +68,12 @@ impl<'a, P: Param> ParamSlider<'a, P> {
} }
fn set_normalized_value(&self, normalized: f32) { fn set_normalized_value(&self, normalized: f32) {
if normalized != self.normalized_value() { // This snaps to the nearest plain value if the parameter is stepped in some way.
// This snaps to the nearest plain value if the parameter is stepped in some wayA
// TODO: As an optimization, we could add a `const CONTINUOUS: bool` to the parameter to // TODO: As an optimization, we could add a `const CONTINUOUS: bool` to the parameter to
// avoid this normalized->plain->normalized conversion for parameters that don't need // avoid this normalized->plain->normalized conversion for parameters that don't need
// it // it
let value = self.param.preview_plain(normalized); let value = self.param.preview_plain(normalized);
if value != self.plain_value() {
self.setter.set_parameter(self.param, value); self.setter.set_parameter(self.param, value);
} }
} }