mirror of
https://github.com/obsqrbtz/egui_knob.git
synced 2026-04-08 20:19:17 +03:00
fix: hover highlights
This commit is contained in:
28
src/lib.rs
28
src/lib.rs
@@ -196,6 +196,16 @@ impl<'a> Knob<'a> {
|
||||
self.step = Some(step);
|
||||
self
|
||||
}
|
||||
// Private
|
||||
fn compute_angle(&self) -> f32 {
|
||||
if self.min == self.max {
|
||||
self.min_angle
|
||||
} else {
|
||||
self.min_angle
|
||||
+ (*self.value - self.min) / (self.max - self.min)
|
||||
* (self.max_angle - self.min_angle)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Widget for Knob<'_> {
|
||||
@@ -261,21 +271,15 @@ impl Widget for Knob<'_> {
|
||||
|
||||
let center = knob_rect.center();
|
||||
let radius = knob_size.x / 2.0;
|
||||
let angle = if self.min == self.max {
|
||||
// If min == max, just return min angle
|
||||
// That's a edge case, using a 0 range knob is pretty useless
|
||||
self.min_angle
|
||||
let angle = self.compute_angle();
|
||||
let knob_hovered = response.hovered();
|
||||
let knob_color = if knob_hovered {
|
||||
self.knob_color.linear_multiply(1.2)
|
||||
} else {
|
||||
self.min_angle
|
||||
+ (*self.value - self.min) / (self.max - self.min)
|
||||
* (self.max_angle - self.min_angle)
|
||||
self.knob_color
|
||||
};
|
||||
|
||||
painter.circle_stroke(
|
||||
center,
|
||||
radius,
|
||||
Stroke::new(self.stroke_width, self.knob_color),
|
||||
);
|
||||
painter.circle_stroke(center, radius, Stroke::new(self.stroke_width, knob_color));
|
||||
|
||||
match self.style {
|
||||
KnobStyle::Wiper => {
|
||||
|
||||
Reference in New Issue
Block a user