Fix volume control exceeding limits during mouse wheel scroll (#1814)
Some checks failed
MSBuild / build (push) Has been cancelled
MSBuild / publish (push) Has been cancelled

* Fix mouse scroll volume adjustment by clamping value to valid range [0.0, 1.0]
This commit is contained in:
Copilot
2025-11-25 00:18:36 +08:00
committed by GitHub
parent f41fb0a68e
commit cbf3e566d9

View File

@@ -351,7 +351,7 @@ public partial class ViewerPanel : UserControl, IDisposable, INotifyPropertyChan
private void ChangeVolume(double delta) private void ChangeVolume(double delta)
{ {
LinearVolume += delta; LinearVolume = Math.Max(0d, Math.Min(1d, LinearVolume + delta));
} }
private void TogglePlayPause(object sender, EventArgs e) private void TogglePlayPause(object sender, EventArgs e)
@@ -385,16 +385,16 @@ public partial class ViewerPanel : UserControl, IDisposable, INotifyPropertyChan
UpdateMeta(path, info); UpdateMeta(path, info);
// detect rotation // detect rotation
double.TryParse(info?.Get(StreamKind.Video, 0, "Rotation"), out var rotation); _ = double.TryParse(info?.Get(StreamKind.Video, 0, "Rotation"), out var rotation);
// Correct rotation: on some machine the value "90" becomes "90000" by some reason // Correct rotation: on some machine the value "90" becomes "90000" by some reason
if (rotation > 360) if (rotation > 360d)
rotation /= 1e3; rotation /= 1e3;
if (Math.Abs(rotation) > 0.1) if (Math.Abs(rotation) > 0.1d)
mediaElement.LayoutTransform = new RotateTransform(rotation, 0.5, 0.5); mediaElement.LayoutTransform = new RotateTransform(rotation, 0.5d, 0.5d);
mediaElement.Source = new Uri(path); mediaElement.Source = new Uri(path);
// old plugin use an int-typed "Volume" config key ranged from 0 to 100. Let's use a new one here. // old plugin use an int-typed "Volume" config key ranged from 0 to 100. Let's use a new one here.
LinearVolume = SettingHelper.Get("VolumeDouble", 1d, "QuickLook.Plugin.VideoViewer"); LinearVolume = Math.Max(0d, Math.Min(1d, SettingHelper.Get("VolumeDouble", 1d, "QuickLook.Plugin.VideoViewer")));
mediaElement.Play(); mediaElement.Play();
} }