Skip to content

Commit 481d2d2

Browse files
committed
feat: add mouse scroll on volume slider #90
1 parent 9aa023a commit 481d2d2

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

src/Nagi.WinUI/MainPage.xaml

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -423,11 +423,35 @@
423423
</ItemsControl.ItemsPanel>
424424
</ItemsControl>
425425

426-
<Slider
427-
VerticalAlignment="Center"
428-
Style="{StaticResource VolumeSliderStyle}"
429-
Value="{x:Bind ViewModel.CurrentVolume, Mode=TwoWay}"
430-
Visibility="{x:Bind ViewModel.IsVolumeControlVisible, Converter={StaticResource BooleanToVisibilityConverter}, Mode=OneWay}" />
426+
<Grid
427+
Height="72"
428+
Margin="-12,-20,-12,-20"
429+
Background="Transparent"
430+
PointerWheelChanged="VolumeSliderContainer_PointerWheelChanged">
431+
<Grid.ColumnDefinitions>
432+
<ColumnDefinition Width="Auto" />
433+
<ColumnDefinition Width="*" />
434+
<ColumnDefinition Width="Auto" />
435+
</Grid.ColumnDefinitions>
436+
<!-- Left padding area -->
437+
<Rectangle
438+
Grid.Column="0"
439+
Width="12"
440+
Fill="Transparent" />
441+
442+
<Slider
443+
Grid.Column="1"
444+
VerticalAlignment="Center"
445+
Style="{StaticResource VolumeSliderStyle}"
446+
Value="{x:Bind ViewModel.CurrentVolume, Mode=TwoWay}"
447+
Visibility="{x:Bind ViewModel.IsVolumeControlVisible, Converter={StaticResource BooleanToVisibilityConverter}, Mode=OneWay}" />
448+
449+
<!-- Right padding area -->
450+
<Rectangle
451+
Grid.Column="2"
452+
Width="12"
453+
Fill="Transparent" />
454+
</Grid>
431455
</StackPanel>
432456
</Grid>
433457

src/Nagi.WinUI/MainPage.xaml.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,19 @@ private async Task SavePaneStateAsync(bool isOpen)
511511
}
512512
}
513513

514+
private void VolumeSliderContainer_PointerWheelChanged(object sender, PointerRoutedEventArgs e)
515+
{
516+
var pointerPoint = e.GetCurrentPoint((UIElement)sender);
517+
var delta = pointerPoint.Properties.MouseWheelDelta;
518+
519+
if (delta > 0)
520+
ViewModel.CurrentVolume = Math.Min(100, ViewModel.CurrentVolume + VolumeChangeStep);
521+
else if (delta < 0)
522+
ViewModel.CurrentVolume = Math.Max(0, ViewModel.CurrentVolume - VolumeChangeStep);
523+
524+
e.Handled = true;
525+
}
526+
514527
/// <summary>
515528
/// Restores the navigation pane state if the "remember pane state" setting is enabled.
516529
/// This overrides the XAML adaptive trigger's default state.

0 commit comments

Comments
 (0)