diff --git a/src/Avalonia.Controls/Primitives/ScrollBar.cs b/src/Avalonia.Controls/Primitives/ScrollBar.cs index f6186a29a9..e0431985af 100644 --- a/src/Avalonia.Controls/Primitives/ScrollBar.cs +++ b/src/Avalonia.Controls/Primitives/ScrollBar.cs @@ -3,6 +3,7 @@ using Avalonia.Data; using Avalonia.Interactivity; using Avalonia.Input; using Avalonia.Layout; +using Avalonia.Threading; namespace Avalonia.Controls.Primitives { @@ -44,6 +45,7 @@ namespace Avalonia.Controls.Primitives private Button _lineDownButton; private Button _pageUpButton; private Button _pageDownButton; + private DispatcherTimer _collapseTimer; /// /// Initializes static members of the class. @@ -143,6 +145,22 @@ namespace Avalonia.Controls.Primitives } } + protected override void OnPointerEnter(PointerEventArgs e) + { + base.OnPointerEnter(e); + + ResetCollapseTimer(); + + Expand(); + } + + protected override void OnPointerLeave(PointerEventArgs e) + { + base.OnPointerLeave(e); + + CollapseAfterDelay(); + } + protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { if (_lineUpButton != null) @@ -193,6 +211,50 @@ namespace Avalonia.Controls.Primitives } } + private void CollapseAfterDelay() + { + if (_collapseTimer != null) + { + _collapseTimer.Stop(); + } + else + { + _collapseTimer = new DispatcherTimer(TimeSpan.FromSeconds(2), DispatcherPriority.Normal, OnCollapseTimerTick); + } + + _collapseTimer.Start(); + } + + private void ResetCollapseTimer(bool restart = false) + { + if (_collapseTimer != null && _collapseTimer.IsEnabled) + { + _collapseTimer.Stop(); + + if (restart) + { + _collapseTimer.Start(); + } + } + } + + private void OnCollapseTimerTick(object sender, EventArgs e) + { + ResetCollapseTimer(); + + Collapse(); + } + + private void Collapse() + { + PseudoClasses.Set(":expanded", false); + } + + private void Expand() + { + PseudoClasses.Set(":expanded", true); + } + private void LineUpClick(object sender, RoutedEventArgs e) { SmallDecrement(); diff --git a/src/Avalonia.Controls/Primitives/Track.cs b/src/Avalonia.Controls/Primitives/Track.cs index 1db47a13e7..c91adaa26e 100644 --- a/src/Avalonia.Controls/Primitives/Track.cs +++ b/src/Avalonia.Controls/Primitives/Track.cs @@ -259,7 +259,7 @@ namespace Avalonia.Controls.Primitives CoerceLength(ref increaseButtonLength, arrangeSize.Width); CoerceLength(ref thumbLength, arrangeSize.Width); - offset = offset.WithY(isDirectionReversed ? increaseButtonLength + thumbLength : 0.0); + offset = offset.WithX(isDirectionReversed ? increaseButtonLength + thumbLength : 0.0); pieceSize = pieceSize.WithWidth(decreaseButtonLength); if (DecreaseButton != null) diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml index bb52c6eafb..94aff9c0c5 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentBaseDark.xaml @@ -19,7 +19,6 @@ #FF000000 #FF000000 #FF333333 - #FF9A9A9A #FF808080 #FF808080 #FF151515 @@ -351,5 +350,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00:00:00.1 + 00:00:00.40 + 00:00:02.00 + 00:00:02 + 00:00:00.1 + 00:00:02.1 + 16 + 0.125 + -2 + scaleX(0.125) translateX(-2px) + scaleY(0.125) translateY(-2px) + 8 diff --git a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml index 70160ebb00..627a19e575 100644 --- a/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml +++ b/src/Avalonia.Themes.Fluent/Accents/FluentControlResourcesDark.xaml @@ -431,5 +431,69 @@ 8,5,8,7 + + + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 00:00:00.1 + 00:00:02 + 00:00:00.1 + 00:00:02.1 + 16 + 8 + 00:00:00.40 + 00:00:02.00 + diff --git a/src/Avalonia.Themes.Fluent/ScrollBar.xaml b/src/Avalonia.Themes.Fluent/ScrollBar.xaml index 0f8fa4986d..71494687e9 100644 --- a/src/Avalonia.Themes.Fluent/ScrollBar.xaml +++ b/src/Avalonia.Themes.Fluent/ScrollBar.xaml @@ -1,142 +1,265 @@ - + + + + + - + + - - - - - - + + + + - + + + + + + + + + + + + - - + + + diff --git a/src/Avalonia.Themes.Fluent/ScrollViewer.xaml b/src/Avalonia.Themes.Fluent/ScrollViewer.xaml index 1d893133e1..3f6fe663cd 100644 --- a/src/Avalonia.Themes.Fluent/ScrollViewer.xaml +++ b/src/Avalonia.Themes.Fluent/ScrollViewer.xaml @@ -1,47 +1,55 @@ - + + + + +