diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Graphics/RectInt32Convert.cs b/src/Snap.Hutao/Snap.Hutao/Core/Graphics/RectInt32Convert.cs index 131b5399..2f9ef590 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/Graphics/RectInt32Convert.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/Graphics/RectInt32Convert.cs @@ -3,6 +3,7 @@ using Snap.Hutao.Win32.Foundation; using System.Numerics; +using Windows.Foundation; using Windows.Graphics; namespace Snap.Hutao.Core.Graphics; @@ -14,6 +15,11 @@ internal static class RectInt32Convert return new(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top); } + public static RectInt32 RectInt32(Point position, Vector2 size) + { + return new((int)position.X, (int)position.Y, (int)size.X, (int)size.Y); + } + public static RectInt32 RectInt32(int x, int y, Vector2 size) { return new(x, y, (int)size.X, (int)size.Y); diff --git a/src/Snap.Hutao/Snap.Hutao/Service/User/UserInitializationService.cs b/src/Snap.Hutao/Snap.Hutao/Service/User/UserInitializationService.cs index 137ee3bb..a3523101 100644 --- a/src/Snap.Hutao/Snap.Hutao/Service/User/UserInitializationService.cs +++ b/src/Snap.Hutao/Snap.Hutao/Service/User/UserInitializationService.cs @@ -27,6 +27,8 @@ internal sealed partial class UserInitializationService : IUserInitializationSer if (!await InitializeUserAsync(user, token).ConfigureAwait(false)) { user.UserInfo = new() { Nickname = SH.ModelBindingUserInitializationFailed }; + + await taskContext.SwitchToMainThreadAsync(); user.UserGameRoles = []; } diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Windowing/XamlWindowController.cs b/src/Snap.Hutao/Snap.Hutao/UI/Windowing/XamlWindowController.cs index a283b54e..cd91751d 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Windowing/XamlWindowController.cs +++ b/src/Snap.Hutao/Snap.Hutao/UI/Windowing/XamlWindowController.cs @@ -22,7 +22,9 @@ using Snap.Hutao.UI.Xaml.Media.Backdrop; using Snap.Hutao.Win32.Foundation; using Snap.Hutao.Win32.Graphics.Dwm; using Snap.Hutao.Win32.UI.WindowsAndMessaging; +using System.Diagnostics; using System.IO; +using Windows.Foundation; using Windows.Graphics; using Windows.UI; using static Snap.Hutao.Win32.DwmApi; @@ -106,17 +108,17 @@ internal sealed class XamlWindowController if (XamlApplicationLifetime.LaunchedWithNotifyIcon && !XamlApplicationLifetime.Exiting) { - if (!IsNotifyIconVisible()) - { - new AppNotificationBuilder() - .AddText(SH.CoreWindowingNotifyIconPromotedHint) - .Show(); - } - ICurrentXamlWindowReference currentXamlWindowReference = serviceProvider.GetRequiredService(); if (currentXamlWindowReference.Window == window) { currentXamlWindowReference.Window = default!; + + if (!IsNotifyIconVisible()) + { + new AppNotificationBuilder() + .AddText(SH.CoreWindowingNotifyIconPromotedHint) + .Show(); + } } GC.Collect(GC.MaxGeneration); @@ -150,7 +152,7 @@ internal sealed class XamlWindowController RECT iconRect = serviceProvider.GetRequiredService().GetRect(); - if (UniversalApiContract.IsPresent(WindowsVersion.Windows11)) + if (Core.UniversalApiContract.IsPresent(WindowsVersion.Windows11)) { RECT primaryRect = DisplayArea.Primary.OuterBounds.ToRECT(); return IntersectRect(out _, in primaryRect, in iconRect); @@ -331,8 +333,13 @@ internal sealed class XamlWindowController return; } - RectInt32 dragRect = RectInt32Convert.RectInt32(0, 0, xamlWindow.TitleBarAccess.ActualSize).Scale(window.GetRasterizationScale()); - window.GetInputNonClientPointerSource().SetRegionRects(NonClientRegionKind.Caption, [dragRect]); + // E_UNEXPECTED will be thrown if the Content is not loaded. + if (xamlWindow.TitleBarAccess.IsLoaded) + { + Point position = xamlWindow.TitleBarAccess.TransformToVisual(window.Content).TransformPoint(default); + RectInt32 dragRect = RectInt32Convert.RectInt32(position, xamlWindow.TitleBarAccess.ActualSize).Scale(window.GetRasterizationScale()); + window.GetInputNonClientPointerSource().SetRegionRects(NonClientRegionKind.Caption, [dragRect]); + } } #endregion } \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/FeedbackPage.xaml b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/FeedbackPage.xaml index 1e5f1885..c777b161 100644 --- a/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/FeedbackPage.xaml +++ b/src/Snap.Hutao/Snap.Hutao/UI/Xaml/View/Page/FeedbackPage.xaml @@ -50,7 +50,7 @@ PanePlacement="Right"> - + - + @@ -21,22 +21,28 @@