3 Commits

4 changed files with 9 additions and 5 deletions

2
Cargo.lock generated
View File

@@ -896,7 +896,7 @@ dependencies = [
[[package]] [[package]]
name = "egui_knob" name = "egui_knob"
version = "0.1.6" version = "0.1.8"
dependencies = [ dependencies = [
"eframe", "eframe",
"egui", "egui",

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "egui_knob" name = "egui_knob"
version = "0.1.6" version = "0.1.8"
edition = "2021" edition = "2021"
description = "A simple knob widget for egui" description = "A simple knob widget for egui"
homepage = "https://github.com/obsqrbtz/egui_knob" homepage = "https://github.com/obsqrbtz/egui_knob"

View File

@@ -23,11 +23,14 @@ impl eframe::App for KnobExample {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
egui::CentralPanel::default().show(ctx, |ui| { egui::CentralPanel::default().show(ctx, |ui| {
ui.horizontal(|ui| { ui.horizontal(|ui| {
ui.add( if ui.add(
Knob::new(&mut self.value, 0.0, 100.0, egui_knob::KnobStyle::Dot) Knob::new(&mut self.value, 0.0, 100.0, egui_knob::KnobStyle::Dot)
.with_label("Gain", egui_knob::LabelPosition::Bottom) .with_label("Gain", egui_knob::LabelPosition::Bottom)
.with_size(50.0), .with_size(50.0),
); ).changed(){
println!("Value changed");
}
ui.add( ui.add(
Knob::new(&mut self.value, 0.0, 100.0, egui_knob::KnobStyle::Wiper) Knob::new(&mut self.value, 0.0, 100.0, egui_knob::KnobStyle::Wiper)
.with_label("Gain", egui_knob::LabelPosition::Bottom) .with_label("Gain", egui_knob::LabelPosition::Bottom)

View File

@@ -104,13 +104,14 @@ impl Widget for Knob<'_> {
knob_size.y + label_size.y + label_padding * 6.0, 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() { if response.dragged() {
let delta = response.drag_delta().y; let delta = response.drag_delta().y;
let range = self.max - self.min; let range = self.max - self.min;
let step = range * 0.005; let step = range * 0.005;
*self.value = (*self.value - delta * step).clamp(self.min, self.max); *self.value = (*self.value - delta * step).clamp(self.min, self.max);
response.mark_changed();
} }
let painter = ui.painter(); let painter = ui.painter();