Fix double click handling after Vizia update
This commit is contained in:
parent
85543e1668
commit
ca22806f8c
|
@ -25,9 +25,6 @@ pub struct ParamSlider {
|
||||||
/// Will be set to `true` if we're dragging the parameter. Resetting the parameter or entering a
|
/// Will be set to `true` if we're dragging the parameter. Resetting the parameter or entering a
|
||||||
/// text value should not initiate a drag.
|
/// text value should not initiate a drag.
|
||||||
drag_active: bool,
|
drag_active: bool,
|
||||||
/// Whether the next click is a double click. Vizia will send a double click event followed by a
|
|
||||||
/// regular mouse down event when double clicking.
|
|
||||||
is_double_click: bool,
|
|
||||||
/// We keep track of the start coordinate and normalized value when holding down Shift while
|
/// We keep track of the start coordinate and normalized value when holding down Shift while
|
||||||
/// dragging for higher precision dragging. This is a `None` value when granular dragging is not
|
/// dragging for higher precision dragging. This is a `None` value when granular dragging is not
|
||||||
/// active.
|
/// active.
|
||||||
|
@ -106,7 +103,6 @@ impl ParamSlider {
|
||||||
param_ptr,
|
param_ptr,
|
||||||
|
|
||||||
drag_active: false,
|
drag_active: false,
|
||||||
is_double_click: false,
|
|
||||||
granular_drag_start_x_value: None,
|
granular_drag_start_x_value: None,
|
||||||
|
|
||||||
style: ParamSliderStyle::Centered,
|
style: ParamSliderStyle::Centered,
|
||||||
|
@ -418,7 +414,7 @@ impl View for ParamSlider {
|
||||||
// ALt+Click brings up a text entry dialog
|
// ALt+Click brings up a text entry dialog
|
||||||
self.text_input_active = true;
|
self.text_input_active = true;
|
||||||
cx.set_active(true);
|
cx.set_active(true);
|
||||||
} else if cx.modifiers.command() || self.is_double_click {
|
} else if cx.modifiers.command() {
|
||||||
// Ctrl+Click and double click should reset the parameter instead of initiating
|
// Ctrl+Click and double click should reset the parameter instead of initiating
|
||||||
// a drag operation
|
// a drag operation
|
||||||
cx.emit(RawParamEvent::BeginSetParameter(self.param_ptr));
|
cx.emit(RawParamEvent::BeginSetParameter(self.param_ptr));
|
||||||
|
@ -449,14 +445,16 @@ impl View for ParamSlider {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We'll set this here because weird things like Alt+double click should not cause
|
|
||||||
// the next click to become a reset
|
|
||||||
self.is_double_click = false;
|
|
||||||
}
|
}
|
||||||
WindowEvent::MouseDoubleClick(MouseButton::Left) => {
|
WindowEvent::MouseDoubleClick(MouseButton::Left) => {
|
||||||
// Vizia will send a regular mouse down after this, so we'll handle the reset there
|
// Ctrl+Click and double click should reset the parameter instead of initiating
|
||||||
self.is_double_click = true;
|
// a drag operation
|
||||||
|
cx.emit(RawParamEvent::BeginSetParameter(self.param_ptr));
|
||||||
|
cx.emit(RawParamEvent::SetParameterNormalized(
|
||||||
|
self.param_ptr,
|
||||||
|
unsafe { self.param_ptr.default_normalized_value() },
|
||||||
|
));
|
||||||
|
cx.emit(RawParamEvent::EndSetParameter(self.param_ptr));
|
||||||
}
|
}
|
||||||
WindowEvent::MouseUp(MouseButton::Left) => {
|
WindowEvent::MouseUp(MouseButton::Left) => {
|
||||||
if self.drag_active {
|
if self.drag_active {
|
||||||
|
|
Loading…
Reference in a new issue