From 773f3a3584b218c4c3580e2accd34cb474172d9e Mon Sep 17 00:00:00 2001 From: Splitwirez Date: Tue, 7 Jul 2020 13:51:45 -0400 Subject: [PATCH] Just code style things --- src/Avalonia.Controls/ToggleSwitch.cs | 35 +++++++++++++++++++++------ 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/Avalonia.Controls/ToggleSwitch.cs b/src/Avalonia.Controls/ToggleSwitch.cs index 15e22d4d36..74c2408449 100644 --- a/src/Avalonia.Controls/ToggleSwitch.cs +++ b/src/Avalonia.Controls/ToggleSwitch.cs @@ -10,6 +10,12 @@ namespace Avalonia.Controls /// public class ToggleSwitch : ToggleButton { + Panel _knobsPanel; + Panel _switchKnob; + bool _knobsPanelPressed = false; + Point _switchStartPoint = new Point(); + double _initLeft = -1; + static ToggleSwitch() { OffContentProperty.Changed.AddClassHandler((x, e) => x.OffContentChanged(e)); @@ -17,13 +23,17 @@ namespace Avalonia.Controls IsCheckedProperty.Changed.AddClassHandler((x, e) => { if ((e.NewValue != null) && (e.NewValue is bool val)) + { x.UpdateKnobPos(val); + } }); BoundsProperty.Changed.AddClassHandler((x, e) => { if (x.IsChecked != null) + { x.UpdateKnobPos(x.IsChecked.Value); + } }); } @@ -144,9 +154,6 @@ namespace Avalonia.Controls } - Panel _knobsPanel; - Panel _switchKnob; - bool _knobsPanelPressed = false; protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); @@ -159,11 +166,11 @@ namespace Avalonia.Controls _knobsPanel.PointerMoved += KnobsPanel_PointerMoved; if (IsChecked.HasValue) + { UpdateKnobPos(IsChecked.Value); + } } - - Point _switchStartPoint = new Point(); - double _initLeft = -1; + private void KnobsPanel_PointerPressed(object sender, Input.PointerPressedEventArgs e) { _switchStartPoint = e.GetPosition(_switchKnob); @@ -178,16 +185,22 @@ namespace Avalonia.Controls { bool shouldBecomeChecked = Canvas.GetLeft(_knobsPanel) >= (_switchKnob.Bounds.Width / 2); _knobsPanel.ClearValue(Canvas.LeftProperty); - + PseudoClasses.Set(":dragging", false); if (shouldBecomeChecked == IsChecked) + { UpdateKnobPos(shouldBecomeChecked); + } else + { IsChecked = shouldBecomeChecked; + } } else + { base.Toggle(); + } _isDragging = false; @@ -208,14 +221,18 @@ namespace Avalonia.Controls } if (_isDragging) + { Canvas.SetLeft(_knobsPanel, System.Math.Min(_switchKnob.Bounds.Width, System.Math.Max(0, (_initLeft + difference.X)))); + } } } protected override void Toggle() { if ((_switchKnob != null) && (!_switchKnob.IsPointerOver)) + { base.Toggle(); + } } protected void UpdateKnobPos(bool value) @@ -223,9 +240,13 @@ namespace Avalonia.Controls if ((_switchKnob != null) && (_knobsPanel != null)) { if (value) + { Canvas.SetLeft(_knobsPanel, _switchKnob.Bounds.Width); + } else + { Canvas.SetLeft(_knobsPanel, 0); + } } } }