fix: hover highlights

This commit is contained in:
2025-07-16 01:09:38 +03:00
parent 617851102b
commit 86d07f3593

View File

@@ -196,6 +196,16 @@ impl<'a> Knob<'a> {
self.step = Some(step); self.step = Some(step);
self 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<'_> { impl Widget for Knob<'_> {
@@ -261,21 +271,15 @@ impl Widget for Knob<'_> {
let center = knob_rect.center(); let center = knob_rect.center();
let radius = knob_size.x / 2.0; let radius = knob_size.x / 2.0;
let angle = if self.min == self.max { let angle = self.compute_angle();
// If min == max, just return min angle let knob_hovered = response.hovered();
// That's a edge case, using a 0 range knob is pretty useless let knob_color = if knob_hovered {
self.min_angle self.knob_color.linear_multiply(1.2)
} else { } else {
self.min_angle self.knob_color
+ (*self.value - self.min) / (self.max - self.min)
* (self.max_angle - self.min_angle)
}; };
painter.circle_stroke( painter.circle_stroke(center, radius, Stroke::new(self.stroke_width, knob_color));
center,
radius,
Stroke::new(self.stroke_width, self.knob_color),
);
match self.style { match self.style {
KnobStyle::Wiper => { KnobStyle::Wiper => {