From a3d181b2ecd712e7dc30b7ce963c353e210a630d Mon Sep 17 00:00:00 2001 From: MBucari Date: Tue, 11 Nov 2025 03:21:20 -0700 Subject: [PATCH] Fix Primary Screen NRE (#1420) --- .../Dialogs/DescriptionDisplayDialog.axaml.cs | 10 ++++++---- Source/LibationAvalonia/FormSaveExtension.cs | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Source/LibationAvalonia/Dialogs/DescriptionDisplayDialog.axaml.cs b/Source/LibationAvalonia/Dialogs/DescriptionDisplayDialog.axaml.cs index 8a33783b..993c8861 100644 --- a/Source/LibationAvalonia/Dialogs/DescriptionDisplayDialog.axaml.cs +++ b/Source/LibationAvalonia/Dialogs/DescriptionDisplayDialog.axaml.cs @@ -1,13 +1,15 @@ using Avalonia; using Avalonia.Controls; using System; +using System.Linq; +#nullable enable namespace LibationAvalonia.Dialogs { public partial class DescriptionDisplayDialog : Window { public Point SpawnLocation { get; set; } - public string DescriptionText { get; init; } + public string? DescriptionText { get; init; } public DescriptionDisplayDialog() { InitializeComponent(); @@ -17,15 +19,15 @@ namespace LibationAvalonia.Dialogs Opened += DescriptionDisplay_Opened; } - private void DescriptionDisplay_Opened(object sender, EventArgs e) + private void DescriptionDisplay_Opened(object? sender, EventArgs e) { DescriptionTextBox.Focus(); } - private void DescriptionDisplay_Activated(object sender, EventArgs e) + private void DescriptionDisplay_Activated(object? sender, EventArgs e) { DataContext = this; - var workingHeight = this.Screens.Primary.WorkingArea.Height; + var workingHeight = (Screens.ScreenFromTopLevel(this) ?? Screens.Primary ?? Screens.All.FirstOrDefault())?.WorkingArea.Height ?? 1080; DescriptionTextBox.Measure(new Size(DescriptionTextBox.MinWidth, workingHeight * 0.8)); this.Width = DescriptionTextBox.DesiredSize.Width; diff --git a/Source/LibationAvalonia/FormSaveExtension.cs b/Source/LibationAvalonia/FormSaveExtension.cs index 1dfa0a74..91fa42ed 100644 --- a/Source/LibationAvalonia/FormSaveExtension.cs +++ b/Source/LibationAvalonia/FormSaveExtension.cs @@ -41,7 +41,7 @@ namespace LibationAvalonia savedState.Width = (int)form.Width; savedState.Height = (int)form.Height; } - if (form.Screens.Primary is Screen primaryScreen) + if ((form.Screens.Primary ?? form.Screens.All.FirstOrDefault()) is Screen primaryScreen) { // Fit to the current screen size in case the screen resolution changed since the size was last persisted if (savedState.Width > primaryScreen.WorkingArea.Width)