From 9031d1c92033f112b0cfac3ba938bf1c7d874013 Mon Sep 17 00:00:00 2001 From: Daniel Dada Date: Mon, 3 Feb 2025 22:47:48 +0300 Subject: [PATCH] fix: mark reponse changed when knob was dragged --- examples/example_knob.rs | 7 +++++-- src/lib.rs | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) 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();