|
|
|
@ -331,16 +331,17 @@ namespace Avalonia.Controls |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
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; |
|
|
|
|