From a38c77964145823983feccdc6fb42b420aac9b8a Mon Sep 17 00:00:00 2001 From: gabornemeth Date: Wed, 24 Nov 2021 23:30:59 +0100 Subject: [PATCH 1/2] fix stuck tooltips on macOS --- native/Avalonia.Native/src/OSX/window.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/native/Avalonia.Native/src/OSX/window.mm b/native/Avalonia.Native/src/OSX/window.mm index d5289f5229..9208848b4c 100644 --- a/native/Avalonia.Native/src/OSX/window.mm +++ b/native/Avalonia.Native/src/OSX/window.mm @@ -1494,7 +1494,7 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent NSRect rect = NSZeroRect; rect.size = newSize; - NSTrackingAreaOptions options = NSTrackingActiveAlways | NSTrackingMouseMoved | NSTrackingEnabledDuringMouseDrag; + NSTrackingAreaOptions options = NSTrackingActiveAlways | NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited | NSTrackingEnabledDuringMouseDrag; _area = [[NSTrackingArea alloc] initWithRect:rect options:options owner:self userInfo:nullptr]; [self addTrackingArea:_area]; From c43ee1c52d212e74aaaa02105af4c2f6f5ac277f Mon Sep 17 00:00:00 2001 From: Jan-Peter Zurek Date: Thu, 25 Nov 2021 15:35:14 +0100 Subject: [PATCH 2/2] Fix slider behaviour for bigger thumbs Thumb now moves synchronously with pointer instead of relativ to track position. --- src/Avalonia.Controls/Slider.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Avalonia.Controls/Slider.cs b/src/Avalonia.Controls/Slider.cs index 6419981fb1..6af40b0281 100644 --- a/src/Avalonia.Controls/Slider.cs +++ b/src/Avalonia.Controls/Slider.cs @@ -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;