From 0bb1b2ec03c7caf68d9a9fdcfa77d11ed51ce518 Mon Sep 17 00:00:00 2001 From: robloo Date: Sat, 3 Dec 2022 11:37:45 -0500 Subject: [PATCH] Fix ToggleButton tests --- .../Primitives/ToggleButton.cs | 47 ++++++++++++++----- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/src/Avalonia.Controls/Primitives/ToggleButton.cs b/src/Avalonia.Controls/Primitives/ToggleButton.cs index 93ec17f0ca..dfb436a55e 100644 --- a/src/Avalonia.Controls/Primitives/ToggleButton.cs +++ b/src/Avalonia.Controls/Primitives/ToggleButton.cs @@ -68,7 +68,6 @@ namespace Avalonia.Controls.Primitives static ToggleButton() { - IsCheckedProperty.Changed.AddClassHandler((x, e) => x.OnIsCheckedChanged(e)); } public ToggleButton() @@ -176,6 +175,7 @@ namespace Avalonia.Controls.Primitives /// Called when becomes true. /// /// Event arguments for the routed event that is raised by the default implementation of this method. + [Obsolete("Use OnIsCheckedChanged instead.")] protected virtual void OnChecked(RoutedEventArgs e) { RaiseEvent(e); @@ -185,6 +185,7 @@ namespace Avalonia.Controls.Primitives /// Called when becomes false. /// /// Event arguments for the routed event that is raised by the default implementation of this method. + [Obsolete("Use OnIsCheckedChanged instead.")] protected virtual void OnUnchecked(RoutedEventArgs e) { RaiseEvent(e); @@ -194,31 +195,51 @@ namespace Avalonia.Controls.Primitives /// Called when becomes null. /// /// Event arguments for the routed event that is raised by the default implementation of this method. + [Obsolete("Use OnIsCheckedChanged instead.")] protected virtual void OnIndeterminate(RoutedEventArgs e) { RaiseEvent(e); } + /// + /// Called when changes. + /// + /// Event arguments for the routed event that is raised by the default implementation of this method. + protected virtual void OnIsCheckedChanged(RoutedEventArgs e) + { + RaiseEvent(e); + } + protected override AutomationPeer OnCreateAutomationPeer() { return new ToggleButtonAutomationPeer(this); } - private void OnIsCheckedChanged(AvaloniaPropertyChangedEventArgs e) + /// + protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) { - var newValue = (bool?)e.NewValue; + base.OnPropertyChanged(change); - switch (newValue) + if (change.Property == IsCheckedProperty) { - case true: - OnChecked(new RoutedEventArgs(IsCheckedChangedEvent)); - break; - case false: - OnUnchecked(new RoutedEventArgs(IsCheckedChangedEvent)); - break; - default: - OnIndeterminate(new RoutedEventArgs(IsCheckedChangedEvent)); - break; + var newValue = change.GetNewValue(); + +#pragma warning disable CS0618 // Type or member is obsolete + switch (newValue) + { + case true: + OnChecked(new RoutedEventArgs(CheckedEvent)); + break; + case false: + OnUnchecked(new RoutedEventArgs(UncheckedEvent)); + break; + default: + OnIndeterminate(new RoutedEventArgs(IndeterminateEvent)); + break; + } +#pragma warning restore CS0618 // Type or member is obsolete + + OnIsCheckedChanged(new RoutedEventArgs(IsCheckedChangedEvent)); } }