From 0905c46e45e6250d790494a930ac6a58bc76e9a8 Mon Sep 17 00:00:00 2001 From: Zhe Fang Date: Fri, 19 Dec 2025 08:54:24 -0500 Subject: [PATCH] fix: scroll --- .../BetterLyrics.WinUI3/Logic/LyricsAnimator.cs | 6 ++++-- .../BetterLyrics.WinUI3/Logic/LyricsLayoutManager.cs | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Logic/LyricsAnimator.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Logic/LyricsAnimator.cs index 4b69e4a..673e65d 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Logic/LyricsAnimator.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Logic/LyricsAnimator.cs @@ -124,8 +124,10 @@ namespace BetterLyrics.WinUI3.Logic line.AngleTransition.SetEasingType(canvasYScrollTransition.EasingType); line.AngleTransition.SetDuration(yScrollDuration); line.AngleTransition.SetDelay(yScrollDelay); - line.AngleTransition.StartTransition(lyricsEffect.IsFanLyricsEnabled ? - Math.PI * (lyricsEffect.FanLyricsAngle / 180.0) * distanceFactor * (i > playingLineIndex ? 1 : -1) : 0); + line.AngleTransition.StartTransition( + (lyricsEffect.IsFanLyricsEnabled && !isMouseScrolling) ? + Math.PI * (lyricsEffect.FanLyricsAngle / 180.0) * distanceFactor * (i > playingLineIndex ? 1 : -1) : + 0); line.YOffsetTransition.SetEasingType(canvasYScrollTransition.EasingType); line.YOffsetTransition.SetDuration(yScrollDuration); diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Logic/LyricsLayoutManager.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Logic/LyricsLayoutManager.cs index e2eeb1e..b499cde 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Logic/LyricsLayoutManager.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Logic/LyricsLayoutManager.cs @@ -213,6 +213,17 @@ namespace BetterLyrics.WinUI3.Logic if (value >= mousePosition.Y) { result = mid; right = mid - 1; } else { left = mid + 1; } } + + if (result != -1) + { + var line = lines[result]; + double lineTopY = offset + line.TopLeftPosition.Y; + if (mousePosition.Y < lineTopY) + { + result = -1; + } + } + return result; }