| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- using System;
- using System.Runtime.InteropServices;
- using Avalonia;
- using Avalonia.Controls;
- using Avalonia.Markup.Xaml;
- using Avalonia.Threading;
- namespace IntegrationTestApp
- {
- public class MeasureBorder : Border
- {
- protected override Size MeasureOverride(Size availableSize)
- {
- MeasuredWith = availableSize;
-
- return base.MeasureOverride(availableSize);
- }
- public static readonly StyledProperty<Size> MeasuredWithProperty = AvaloniaProperty.Register<MeasureBorder, Size>(
- nameof(MeasuredWith));
- public Size MeasuredWith
- {
- get => GetValue(MeasuredWithProperty);
- set => SetValue(MeasuredWithProperty, value);
- }
- }
-
- public class ShowWindowTest : Window
- {
- private readonly DispatcherTimer? _timer;
- private readonly TextBox? _orderTextBox;
-
- public ShowWindowTest()
- {
- InitializeComponent();
- DataContext = this;
- PositionChanged += (s, e) => this.GetControl<TextBox>("Position").Text = $"{Position}";
- if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
- {
- _orderTextBox = this.GetControl<TextBox>("Order");
- _timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(250) };
- _timer.Tick += TimerOnTick;
- _timer.Start();
- }
- }
-
- private void InitializeComponent()
- {
- AvaloniaXamlLoader.Load(this);
- }
- protected override void OnOpened(EventArgs e)
- {
- base.OnOpened(e);
- var scaling = PlatformImpl!.DesktopScaling;
- this.GetControl<TextBox>("Position").Text = $"{Position}";
- this.GetControl<TextBox>("ScreenRect").Text = $"{Screens.ScreenFromVisual(this)?.WorkingArea}";
- this.GetControl<TextBox>("Scaling").Text = $"{scaling}";
- if (Owner is not null)
- {
- var ownerRect = this.GetControl<TextBox>("OwnerRect");
- var owner = (Window)Owner;
- ownerRect.Text = $"{owner.Position}, {PixelSize.FromSize(owner.FrameSize!.Value, scaling)}";
- }
- }
- protected override void OnClosed(EventArgs e)
- {
- base.OnClosed(e);
- _timer?.Stop();
- }
- private void TimerOnTick(object? sender, EventArgs e)
- {
- _orderTextBox!.Text = MacOSIntegration.GetOrderedIndex(this).ToString();
- }
- }
- }
|