From 8e9583d6d2b928ad0c1d403cd097f1c85a8f39be Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Mon, 14 Mar 2022 20:05:54 +0100 Subject: [PATCH] Handle releasing shift properly for slider widget --- nih_plug_iced/src/widgets/param_slider.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/nih_plug_iced/src/widgets/param_slider.rs b/nih_plug_iced/src/widgets/param_slider.rs index c93ad3c4..c46530b9 100644 --- a/nih_plug_iced/src/widgets/param_slider.rs +++ b/nih_plug_iced/src/widgets/param_slider.rs @@ -204,6 +204,23 @@ impl<'a, P: Param> Widget for ParamSlider<'a, P> { } Event::Keyboard(keyboard::Event::ModifiersChanged(modifiers)) => { self.state.keyboard_modifiers = modifiers; + + // If this happens while dragging, snap back to reality uh I mean the current screen + // position + if !self.state.ignore_changes + && self.state.drag_active + && self.state.granular_drag_start_x.is_some() + && !modifiers.shift() + { + self.state.granular_drag_start_x = None; + + self.set_normalized_value( + shell, + util::remap_rect_x_coordinate(&bounds, cursor_position.x), + ); + } + + return event::Status::Captured; } _ => {} }