From 955b62ea2deec383fe693d169dba8d35633876a3 Mon Sep 17 00:00:00 2001 From: rubik83 <45452623+rubik83@users.noreply.github.com> Date: Tue, 15 Sep 2020 13:00:38 +0200 Subject: fix slider handle_offset formula change : let handle_offset = (bounds.width - handle_width) * ((value - range_start) / (range_end - range_start).max(1.0)) to : let handle_offset = (bounds.width - handle_width) * ((value - range_start) / (range_end - range_start).max(f32::EPSILON)).max(0.0).min(1.0) --- graphics/src/widget/slider.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'graphics/src/widget/slider.rs') diff --git a/graphics/src/widget/slider.rs b/graphics/src/widget/slider.rs index 9a4af9ac..87780d38 100644 --- a/graphics/src/widget/slider.rs +++ b/graphics/src/widget/slider.rs @@ -88,7 +88,7 @@ where }; let handle_offset = (bounds.width - handle_width) - * ((value - range_start) / (range_end - range_start).max(1.0)); + * ((value - range_start) / (range_end - range_start).max(f32::EPSILON)).max(0.0).min(1.0); let handle = Primitive::Quad { bounds: Rectangle { -- cgit From c23136a5df7bc4c4e7f43785088985a1b63f8daf Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 26 Nov 2020 03:33:08 +0100 Subject: Account for empty ranges in `Slider` and `ProgressBar` --- graphics/src/widget/slider.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'graphics/src/widget/slider.rs') diff --git a/graphics/src/widget/slider.rs b/graphics/src/widget/slider.rs index 87780d38..aeceec3f 100644 --- a/graphics/src/widget/slider.rs +++ b/graphics/src/widget/slider.rs @@ -72,8 +72,6 @@ where }, ); - let (range_start, range_end) = range.into_inner(); - let (handle_width, handle_height, handle_border_radius) = match style .handle .shape @@ -87,8 +85,14 @@ where } => (f32::from(width), f32::from(bounds.height), border_radius), }; - let handle_offset = (bounds.width - handle_width) - * ((value - range_start) / (range_end - range_start).max(f32::EPSILON)).max(0.0).min(1.0); + let (range_start, range_end) = range.into_inner(); + + let handle_offset = if range_start >= range_end { + 0.0 + } else { + (bounds.width - handle_width) * (value - range_start) + / (range_end - range_start) + }; let handle = Primitive::Quad { bounds: Rectangle { -- cgit