From df8109c8595a3dd7788659b19b41ba5207382713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=B6ller?= Date: Wed, 4 Jan 2023 17:43:39 +0100 Subject: [PATCH] Fixed Issue 226: Owned/maximized floating windows (LayoutFloatingWindowControl) do not restore to maximized state when the owner (DockingManager) window is restored from being minimized. --- .../Controls/LayoutFloatingWindowControl.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/source/Components/AvalonDock/Controls/LayoutFloatingWindowControl.cs b/source/Components/AvalonDock/Controls/LayoutFloatingWindowControl.cs index c1377a92..725cf6aa 100644 --- a/source/Components/AvalonDock/Controls/LayoutFloatingWindowControl.cs +++ b/source/Components/AvalonDock/Controls/LayoutFloatingWindowControl.cs @@ -218,7 +218,21 @@ private set protected override void OnStateChanged(EventArgs e) { if (!_isInternalChange) - UpdateMaximizedState(WindowState == WindowState.Maximized); + { + if (WindowState == WindowState.Maximized) + { + // Forward external changes to WindowState from any state to a new Maximized state + // to the LayoutFloatingWindowControl internal representation. + UpdateMaximizedState(true); + } + else if (IsMaximized && OwnedByDockingManagerWindow) + { + // Override any external changes to WindowState when owned and in Maximized state. + // This override fixes the issue of an owned LayoutFloatingWindowControl loosing + // its Maximized state when the owner window is restored from a Minimized state. + WindowState = WindowState.Maximized; + } + } base.OnStateChanged(e); }