Skip to content

Commit 11bec84

Browse files
committed
Added Keydown adjustments to GradientSlider
1 parent b40b727 commit 11bec84

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

components/GradientSlider/src/GradientSlider.Input.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.UI;
99
using Microsoft.UI.Xaml.Controls.Primitives;
1010
#endif
11+
using Windows.System;
1112

1213
namespace CommunityToolkit.WinUI.Controls;
1314

@@ -48,6 +49,32 @@ private void Thumb_DragCompleted(object sender, DragCompletedEventArgs e)
4849
OnValueChanged();
4950
}
5051

52+
private void Thumb_KeyDown(object sender, KeyRoutedEventArgs e)
53+
{
54+
if (sender is not GradientSliderThumb thumb)
55+
return;
56+
57+
var change = e.Key switch
58+
{
59+
#if !HAS_UNO
60+
VirtualKey.Left when FlowDirection is FlowDirection.RightToLeft => 0.05,
61+
VirtualKey.Right when FlowDirection is FlowDirection.RightToLeft => -0.05,
62+
#endif
63+
64+
VirtualKey.Left => -0.01,
65+
VirtualKey.Right => 0.01,
66+
67+
_ => 0,
68+
};
69+
70+
if (change is not 0)
71+
{
72+
thumb.GradientStop.Offset = Math.Clamp(change + thumb.GradientStop.Offset, 0, 1);
73+
UpdateThumbPosition(thumb);
74+
e.Handled = true;
75+
}
76+
}
77+
5178
private void ContainerCanvas_PointerEntered(object sender, PointerRoutedEventArgs e)
5279
{
5380
if (_placeholderThumb is null)

components/GradientSlider/src/GradientSlider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ private void ContainerCanvas_SizeChanged(object sender, SizeChangedEventArgs e)
107107
thumb.DragStarted += Thumb_DragStarted;
108108
thumb.DragDelta += Thumb_DragDelta;
109109
thumb.DragCompleted += Thumb_DragCompleted;
110+
thumb.KeyDown += Thumb_KeyDown;
110111
thumb.Loaded += Thumb_Loaded;
111112
var callback = stop.RegisterPropertyChangedCallback(GradientStop.OffsetProperty, OnGradientStopOffsetChanged);
112113
_stopCallbacks.Add(stop, callback);
@@ -131,6 +132,7 @@ private void RemoveStop(GradientStop stop)
131132
thumb.DragStarted -= Thumb_DragStarted;
132133
thumb.DragDelta -= Thumb_DragDelta;
133134
thumb.DragCompleted -= Thumb_DragCompleted;
135+
thumb.KeyDown -= Thumb_KeyDown;
134136
thumb.Loaded -= Thumb_Loaded;
135137
stop.UnregisterPropertyChangedCallback(GradientStop.OffsetProperty, _stopCallbacks[stop]);
136138
_stopCallbacks.Remove(stop);

0 commit comments

Comments
 (0)