Compunet 1 day ago
committed by GitHub
parent
commit
bde91052cb
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 17
      src/Avalonia.Controls/Primitives/ScrollBar.cs

17
src/Avalonia.Controls/Primitives/ScrollBar.cs

@ -85,6 +85,7 @@ namespace Avalonia.Controls.Primitives
private bool _isExpanded; private bool _isExpanded;
private CompositeDisposable? _ownerSubscriptions; private CompositeDisposable? _ownerSubscriptions;
private ScrollViewer? _owner; private ScrollViewer? _owner;
private bool _isDragging;
/// <summary> /// <summary>
/// Initializes static members of the <see cref="ScrollBar"/> class. /// Initializes static members of the <see cref="ScrollBar"/> class.
@ -92,6 +93,7 @@ namespace Avalonia.Controls.Primitives
static ScrollBar() static ScrollBar()
{ {
Thumb.DragDeltaEvent.AddClassHandler<ScrollBar>((x, e) => x.OnThumbDragDelta(e), RoutingStrategies.Bubble); Thumb.DragDeltaEvent.AddClassHandler<ScrollBar>((x, e) => x.OnThumbDragDelta(e), RoutingStrategies.Bubble);
Thumb.DragStartedEvent.AddClassHandler<ScrollBar>((x, e) => x.OnThumbDragStart(e), RoutingStrategies.Bubble);
Thumb.DragCompletedEvent.AddClassHandler<ScrollBar>((x, e) => x.OnThumbDragComplete(e), RoutingStrategies.Bubble); Thumb.DragCompletedEvent.AddClassHandler<ScrollBar>((x, e) => x.OnThumbDragComplete(e), RoutingStrategies.Bubble);
FocusableProperty.OverrideMetadata<ScrollBar>(new(false)); FocusableProperty.OverrideMetadata<ScrollBar>(new(false));
@ -325,7 +327,7 @@ namespace Avalonia.Controls.Primitives
{ {
base.OnPointerExited(e); base.OnPointerExited(e);
if (AllowAutoHide) if (AllowAutoHide && !_isDragging)
{ {
CollapseAfterDelay(); CollapseAfterDelay();
} }
@ -491,8 +493,21 @@ namespace Avalonia.Controls.Primitives
{ {
OnScroll(ScrollEventType.ThumbTrack); OnScroll(ScrollEventType.ThumbTrack);
} }
private void OnThumbDragStart(VectorEventArgs e)
{
_isDragging = true;
}
private void OnThumbDragComplete(VectorEventArgs e) private void OnThumbDragComplete(VectorEventArgs e)
{ {
_isDragging = false;
if (AllowAutoHide && !IsPointerOver)
{
CollapseAfterDelay();
}
OnScroll(ScrollEventType.EndScroll); OnScroll(ScrollEventType.EndScroll);
} }

Loading…
Cancel
Save