diff --git a/examples/example_knob.rs b/examples/example_knob.rs index 897dfca..86536a0 100644 --- a/examples/example_knob.rs +++ b/examples/example_knob.rs @@ -23,11 +23,14 @@ impl eframe::App for KnobExample { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { egui::CentralPanel::default().show(ctx, |ui| { ui.horizontal(|ui| { - ui.add( + if ui.add( Knob::new(&mut self.value, 0.0, 100.0, egui_knob::KnobStyle::Dot) .with_label("Gain", egui_knob::LabelPosition::Bottom) .with_size(50.0), - ); + ).changed(){ + println!("Value changed"); + } + ui.add( Knob::new(&mut self.value, 0.0, 100.0, egui_knob::KnobStyle::Wiper) .with_label("Gain", egui_knob::LabelPosition::Bottom) diff --git a/src/lib.rs b/src/lib.rs index 7a3d853..e285b45 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -104,13 +104,14 @@ impl Widget for Knob<'_> { knob_size.y + label_size.y + label_padding * 6.0, ); - let (rect, response) = ui.allocate_exact_size(adjusted_size, Sense::drag()); + let (rect, mut response) = ui.allocate_exact_size(adjusted_size, Sense::drag()); if response.dragged() { let delta = response.drag_delta().y; let range = self.max - self.min; let step = range * 0.005; *self.value = (*self.value - delta * step).clamp(self.min, self.max); + response.mark_changed(); } let painter = ui.painter();