| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using System.Threading.Tasks;
- using Avalonia.Controls;
- using Avalonia.Interactivity;
- using Avalonia.Platform;
- using Xunit;
- namespace Avalonia.IntegrationTests.Win32;
- internal static class WindowExtensions
- {
- public static PixelRect ToPixelRect(this UnmanagedMethods.RECT rect)
- => new(new PixelPoint(rect.left, rect.top), new PixelPoint(rect.right, rect.bottom));
- public static Task WhenLoadedAsync(this Window window)
- {
- if (window.IsLoaded)
- return Task.CompletedTask;
- var tcs = new TaskCompletionSource();
- window.Loaded += OnLoaded;
- return tcs.Task;
- void OnLoaded(object? sender, RoutedEventArgs e)
- {
- window.Loaded -= OnLoaded;
- tcs.TrySetResult();
- }
- }
- public static Screen GetScreen(this Window window)
- {
- var screen = window.Screens.ScreenFromWindow(window);
- Assert.NotNull(screen);
- return screen;
- }
- public static PixelSize GetWin32ClientSize(this Window window)
- {
- var platformHandle = window.TryGetPlatformHandle();
- Assert.NotNull(platformHandle);
- Assert.True(UnmanagedMethods.GetClientRect(platformHandle.Handle, out var rect));
- return rect.ToPixelRect().Size;
- }
- public static PixelRect GetWin32WindowBounds(this Window window)
- {
- var platformHandle = window.TryGetPlatformHandle();
- Assert.NotNull(platformHandle);
- Assert.True(UnmanagedMethods.GetWindowRect(platformHandle.Handle, out var rect));
- return rect.ToPixelRect();
- }
- }
|