Skip to content

Commit

Permalink
Merge pull request #7016 from yankun/master
Browse files Browse the repository at this point in the history
Fix slider behaviour for bigger thumbs
  • Loading branch information
maxkatz6 authored and danwalmsley committed Dec 7, 2021
1 parent c7932f4 commit eaff384
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions src/Avalonia.Controls/Slider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -331,16 +331,17 @@ private void TrackPressed(object sender, PointerPressedEventArgs e)
}
}

private void MoveToPoint(PointerPoint x)
private void MoveToPoint(PointerPoint posOnTrack)
{
var orient = Orientation == Orientation.Horizontal;

var pointDen = orient ? _track.Bounds.Width : _track.Bounds.Height;
// Just add epsilon to avoid NaN in case 0/0
pointDen += double.Epsilon;

var pointNum = orient ? x.Position.X : x.Position.Y;
var logicalPos = MathUtilities.Clamp(pointNum / pointDen, 0.0d, 1.0d);
var thumbLength = (orient
? _track.Thumb.Bounds.Width
: _track.Thumb.Bounds.Height) + double.Epsilon;
var trackLength = (orient
? _track.Bounds.Width
: _track.Bounds.Height) - thumbLength;
var trackPos = orient ? posOnTrack.Position.X : posOnTrack.Position.Y;
var logicalPos = MathUtilities.Clamp((trackPos - thumbLength * 0.5) / trackLength, 0.0d, 1.0d);
var invert = orient ?
IsDirectionReversed ? 1 : 0 :
IsDirectionReversed ? 0 : 1;
Expand Down

0 comments on commit eaff384

Please sign in to comment.