From 430a428c2fccef9a326787851214354bd8be78cd Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 28 May 2020 22:27:48 -0300 Subject: [PATCH] add pressed and disabled states. --- src/Avalonia.Controls/Slider.cs | 21 +++++++++ src/Avalonia.Themes.Fluent/Slider.xaml | 61 +++++++++++++++++++++----- 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/src/Avalonia.Controls/Slider.cs b/src/Avalonia.Controls/Slider.cs index b7a571af18..0155ff211a 100644 --- a/src/Avalonia.Controls/Slider.cs +++ b/src/Avalonia.Controls/Slider.cs @@ -44,6 +44,9 @@ namespace Avalonia.Controls Thumb.DragStartedEvent.AddClassHandler((x, e) => x.OnThumbDragStarted(e), RoutingStrategies.Bubble); Thumb.DragDeltaEvent.AddClassHandler((x, e) => x.OnThumbDragDelta(e), RoutingStrategies.Bubble); Thumb.DragCompletedEvent.AddClassHandler((x, e) => x.OnThumbDragCompleted(e), RoutingStrategies.Bubble); + PointerPressedEvent.AddClassHandler((x, e) => x.HandlePointerPressed(e), RoutingStrategies.Tunnel, true); + PointerReleasedEvent.AddClassHandler((x, e) => x.HandlePointerReleased(), RoutingStrategies.Tunnel, true); + PointerCaptureLostEvent.AddClassHandler((x, e) => x.HandlePointerReleased(), RoutingStrategies.Tunnel, true); } /// @@ -207,6 +210,24 @@ namespace Avalonia.Controls return value; } + private void HandlePointerPressed(PointerPressedEventArgs e) + { + if (e.GetCurrentPoint(this).Properties.IsLeftButtonPressed) + { + UpdatePseudoClasses(true); + } + } + + private void HandlePointerReleased() + { + UpdatePseudoClasses(false); + } + + private void UpdatePseudoClasses(bool isPressed) + { + PseudoClasses.Set(":pressed", isPressed); + } + private void UpdatePseudoClasses(Orientation o) { PseudoClasses.Set(":vertical", o == Orientation.Vertical); diff --git a/src/Avalonia.Themes.Fluent/Slider.xaml b/src/Avalonia.Themes.Fluent/Slider.xaml index 1bb76b1606..3db372725a 100644 --- a/src/Avalonia.Themes.Fluent/Slider.xaml +++ b/src/Avalonia.Themes.Fluent/Slider.xaml @@ -1,7 +1,10 @@ - + + + + @@ -31,7 +34,7 @@ - + - - + + + + + + + + + + + + + + + + + + + +