Fix upside down slider in the vertical orientation (#3424)

This commit is contained in:
YgorSouza 2023-11-10 11:16:38 +01:00 committed by GitHub
parent e9f92fee4c
commit 7e2c65a82a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 1 deletions

View File

@ -703,7 +703,9 @@ impl<'a> Slider<'a> {
let handle_radius = self.handle_radius(rect);
match self.orientation {
SliderOrientation::Horizontal => rect.x_range().shrink(handle_radius),
SliderOrientation::Vertical => rect.y_range().shrink(handle_radius),
// The vertical case has to be flipped because the largest slider value maps to the
// lowest y value (which is at the top)
SliderOrientation::Vertical => rect.y_range().shrink(handle_radius).flip(),
}
}

View File

@ -97,6 +97,16 @@ impl Rangef {
}
}
/// Flip the min and the max
#[inline]
#[must_use]
pub fn flip(self) -> Self {
Self {
min: self.max,
max: self.min,
}
}
/// The overlap of two ranges, i.e. the range that is contained by both.
///
/// If the ranges do not overlap, returns a range with `span() < 0.0`.