chores: improve work area algo

This commit is contained in:
Zhe Fang
2025-11-12 09:45:39 -05:00
parent 44a1f0a809
commit 31f6ce704d
4 changed files with 14 additions and 7 deletions

View File

@@ -12,7 +12,7 @@
<Identity
Name="37412.BetterLyrics"
Publisher="CN=E1428B0E-DC1D-4EA4-ACB1-4556569D5BA9"
Version="1.0.113.0" />
Version="1.0.114.0" />
<mp:PhoneIdentity PhoneProductId="ca4a4830-fc19-40d9-b823-53e2bff3d816" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

View File

@@ -369,7 +369,7 @@ namespace BetterLyrics.WinUI3.Helper
{
_setLyricsWindowVisibilityByPlayingStatusTimer ??= dispatcherQueue.CreateTimer();
_setLyricsWindowVisibilityByPlayingStatusTimer.Debounce(async () =>
_setLyricsWindowVisibilityByPlayingStatusTimer.Debounce(() =>
{
var window = GetWindowByWindowType<LyricsWindow>();
if (window == null) return;
@@ -378,7 +378,9 @@ namespace BetterLyrics.WinUI3.Helper
{
if (_liveStatesService.LiveStates.LyricsWindowStatus.IsWorkArea)
{
_liveStatesService.LiveStates.IsLyricsWindowStatusRefreshing = true;
SetIsWorkArea<LyricsWindow>(false);
_liveStatesService.LiveStates.IsLyricsWindowStatusRefreshing = false;
}
HideWindow<LyricsWindow>();
}
@@ -386,13 +388,13 @@ namespace BetterLyrics.WinUI3.Helper
{
if (_liveStatesService.LiveStates.LyricsWindowStatus.IsWorkArea)
{
_liveStatesService.LiveStates.IsLyricsWindowStatusRefreshing = true;
SetIsWorkArea<LyricsWindow>(true);
_liveStatesService.LiveStates.IsLyricsWindowStatusRefreshing = false;
}
OpenOrShowWindow<LyricsWindow>();
if (_liveStatesService.LiveStates.LyricsWindowStatus.IsWorkArea)
{
UpdateWorkArea<LyricsWindow>();
await Task.Delay(300);
MoveAndResize<LyricsWindow>(_liveStatesService.LiveStates.LyricsWindowStatus.GetWindowBoundsWhenWorkArea());
}
}

View File

@@ -18,6 +18,9 @@ namespace BetterLyrics.WinUI3.Models
{
[ObservableProperty][NotifyPropertyChangedRecipients] public partial LyricsWindowStatus LyricsWindowStatus { get; set; }
/// <summary>
/// 在需要暂时禁用监听歌词窗口位置大小变化时使用
/// </summary>
public bool IsLyricsWindowStatusRefreshing { get; set; } = false;
public LiveStates()

View File

@@ -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<LyricsWindow>(LiveStates.LyricsWindowStatus.IsWorkArea);
LiveStates.IsLyricsWindowStatusRefreshing = false;
if (LiveStates.LyricsWindowStatus.IsWorkArea)
{
await Task.Delay(300);
WindowHelper.MoveAndResize<LyricsWindow>(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<LyricsWindow>();
await Task.Delay(300);
LiveStates.IsLyricsWindowStatusRefreshing = false;
WindowHelper.MoveAndResize<LyricsWindow>(LiveStates.LyricsWindowStatus.GetWindowBoundsWhenWorkArea());
}
break;