From c48a67389ff4fae5963ec4877ca3e097b869f73a Mon Sep 17 00:00:00 2001 From: Luca Domenichini Date: Fri, 6 Mar 2026 23:01:58 +0100 Subject: [PATCH 1/3] FIX NRE when hovering with mouse over TitleBar buttons if TitleBar is Collapsed --- src/Wpf.Ui/Controls/TitleBar/TitleBar.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs b/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs index 22e4dee0d..f1dced944 100644 --- a/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs +++ b/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs @@ -676,7 +676,7 @@ or PInvoke.WM_NCLBUTTONUP foreach (TitleBarButton button in _buttons) { - if (!button.ReactToHwndHook(message, lParam, out IntPtr returnIntPtr)) + if (button == null || !button.ReactToHwndHook(message, lParam, out IntPtr returnIntPtr)) { continue; } From e361ed6a9bbec39d7475b8119daa462a6e66e0f4 Mon Sep 17 00:00:00 2001 From: Luca Domenichini Date: Fri, 6 Mar 2026 23:15:56 +0100 Subject: [PATCH 2/3] ADD comment --- src/Wpf.Ui/Controls/TitleBar/TitleBar.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs b/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs index f1dced944..c4b8ea236 100644 --- a/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs +++ b/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs @@ -676,6 +676,7 @@ or PInvoke.WM_NCLBUTTONUP foreach (TitleBarButton button in _buttons) { + // Check if button is null to avoid potential NullReferenceException if OnApplyTemplate hasn't been called yet, e.g. when TitleBar has Visibility == Collapsed. if (button == null || !button.ReactToHwndHook(message, lParam, out IntPtr returnIntPtr)) { continue; From 75fa3fbda04d0fe265a45b23e8e22e38b77c7a72 Mon Sep 17 00:00:00 2001 From: Luca Domenichini Date: Tue, 7 Apr 2026 22:07:27 +0200 Subject: [PATCH 3/3] more null checks and null typed array --- src/Wpf.Ui/Controls/TitleBar/TitleBar.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs b/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs index c4b8ea236..f65a33aa7 100644 --- a/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs +++ b/src/Wpf.Ui/Controls/TitleBar/TitleBar.cs @@ -415,7 +415,7 @@ public event TypedEventHandler HelpClicked /// public Action? MinimizeActionOverride { get; set; } - private readonly TitleBarButton[] _buttons = new TitleBarButton[4]; + private readonly TitleBarButton?[] _buttons = new TitleBarButton[4]; private readonly TextBlock _titleBlock; private System.Windows.Window _currentWindow = null!; @@ -674,18 +674,18 @@ or PInvoke.WM_NCLBUTTONUP return IntPtr.Zero; } - foreach (TitleBarButton button in _buttons) + foreach (TitleBarButton? button in _buttons) { // Check if button is null to avoid potential NullReferenceException if OnApplyTemplate hasn't been called yet, e.g. when TitleBar has Visibility == Collapsed. - if (button == null || !button.ReactToHwndHook(message, lParam, out IntPtr returnIntPtr)) + if (button is null || !button.ReactToHwndHook(message, lParam, out IntPtr returnIntPtr)) { continue; } // Fix for when sometimes, button hover backgrounds aren't cleared correctly, causing multiple buttons to appear as if hovered. - foreach (TitleBarButton anotherButton in _buttons) + foreach (TitleBarButton? anotherButton in _buttons) { - if (anotherButton == button) + if (anotherButton is null || anotherButton == button) { continue; }