diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest b/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest index 61af9d2..a8aea92 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3 (Package)/Package.appxmanifest @@ -12,7 +12,7 @@ + Version="1.0.114.0" /> diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/WindowHelper.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/WindowHelper.cs index b303562..1ad713f 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/WindowHelper.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Helper/WindowHelper.cs @@ -369,7 +369,7 @@ namespace BetterLyrics.WinUI3.Helper { _setLyricsWindowVisibilityByPlayingStatusTimer ??= dispatcherQueue.CreateTimer(); - _setLyricsWindowVisibilityByPlayingStatusTimer.Debounce(async () => + _setLyricsWindowVisibilityByPlayingStatusTimer.Debounce(() => { var window = GetWindowByWindowType(); if (window == null) return; @@ -378,7 +378,9 @@ namespace BetterLyrics.WinUI3.Helper { if (_liveStatesService.LiveStates.LyricsWindowStatus.IsWorkArea) { + _liveStatesService.LiveStates.IsLyricsWindowStatusRefreshing = true; SetIsWorkArea(false); + _liveStatesService.LiveStates.IsLyricsWindowStatusRefreshing = false; } HideWindow(); } @@ -386,13 +388,13 @@ namespace BetterLyrics.WinUI3.Helper { if (_liveStatesService.LiveStates.LyricsWindowStatus.IsWorkArea) { + _liveStatesService.LiveStates.IsLyricsWindowStatusRefreshing = true; SetIsWorkArea(true); + _liveStatesService.LiveStates.IsLyricsWindowStatusRefreshing = false; } OpenOrShowWindow(); if (_liveStatesService.LiveStates.LyricsWindowStatus.IsWorkArea) { - UpdateWorkArea(); - await Task.Delay(300); MoveAndResize(_liveStatesService.LiveStates.LyricsWindowStatus.GetWindowBoundsWhenWorkArea()); } } diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LiveStates.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LiveStates.cs index 8a3aa8b..1f60821 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LiveStates.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Models/LiveStates.cs @@ -18,6 +18,9 @@ namespace BetterLyrics.WinUI3.Models { [ObservableProperty][NotifyPropertyChangedRecipients] public partial LyricsWindowStatus LyricsWindowStatus { get; set; } + /// + /// 在需要暂时禁用监听歌词窗口位置大小变化时使用 + /// public bool IsLyricsWindowStatusRefreshing { get; set; } = false; public LiveStates() diff --git a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/LiveStatesService/LiveStatesService.cs b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/LiveStatesService/LiveStatesService.cs index fd9913a..8f34be5 100644 --- a/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/LiveStatesService/LiveStatesService.cs +++ b/BetterLyrics.WinUI3/BetterLyrics.WinUI3/Services/LiveStatesService/LiveStatesService.cs @@ -80,15 +80,16 @@ namespace BetterLyrics.WinUI3.Services.LiveStatesService LiveStates.IsLyricsWindowStatusRefreshing = false; } - private async void LyricsWindowStatus_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e) + private void LyricsWindowStatus_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e) { switch (e.PropertyName) { case nameof(LyricsWindowStatus.IsWorkArea): + LiveStates.IsLyricsWindowStatusRefreshing = true; WindowHelper.SetIsWorkArea(LiveStates.LyricsWindowStatus.IsWorkArea); + LiveStates.IsLyricsWindowStatusRefreshing = false; if (LiveStates.LyricsWindowStatus.IsWorkArea) { - await Task.Delay(300); WindowHelper.MoveAndResize(LiveStates.LyricsWindowStatus.GetWindowBoundsWhenWorkArea()); } break; @@ -98,8 +99,9 @@ namespace BetterLyrics.WinUI3.Services.LiveStatesService LiveStates.LyricsWindowStatus.UpdateMonitorBounds(); if (LiveStates.LyricsWindowStatus.IsWorkArea) { + LiveStates.IsLyricsWindowStatusRefreshing = true; WindowHelper.UpdateWorkArea(); - await Task.Delay(300); + LiveStates.IsLyricsWindowStatusRefreshing = false; WindowHelper.MoveAndResize(LiveStates.LyricsWindowStatus.GetWindowBoundsWhenWorkArea()); } break;