diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs
index a4f4534b88..9b49e866b8 100644
--- a/src/Avalonia.Controls/Window.cs
+++ b/src/Avalonia.Controls/Window.cs
@@ -991,28 +991,28 @@ namespace Avalonia.Controls
///
protected sealed override void HandleResized(Size clientSize, PlatformResizeReason reason)
{
- if (ClientSize == clientSize)
- return;
-
- var sizeToContent = SizeToContent;
-
- // If auto-sizing is enabled, and the resize came from a user resize (or the reason was
- // unspecified) then turn off auto-resizing for any window dimension that is not equal
- // to the requested size.
- if (sizeToContent != SizeToContent.Manual &&
- CanResize &&
- reason == PlatformResizeReason.Unspecified ||
- reason == PlatformResizeReason.User)
+ if (ClientSize != clientSize || double.IsNaN(Width) || double.IsNaN(Height))
{
- if (clientSize.Width != ClientSize.Width)
- sizeToContent &= ~SizeToContent.Width;
- if (clientSize.Height != ClientSize.Height)
- sizeToContent &= ~SizeToContent.Height;
- SizeToContent = sizeToContent;
- }
+ var sizeToContent = SizeToContent;
+
+ // If auto-sizing is enabled, and the resize came from a user resize (or the reason was
+ // unspecified) then turn off auto-resizing for any window dimension that is not equal
+ // to the requested size.
+ if (sizeToContent != SizeToContent.Manual &&
+ CanResize &&
+ reason == PlatformResizeReason.Unspecified ||
+ reason == PlatformResizeReason.User)
+ {
+ if (clientSize.Width != ClientSize.Width)
+ sizeToContent &= ~SizeToContent.Width;
+ if (clientSize.Height != ClientSize.Height)
+ sizeToContent &= ~SizeToContent.Height;
+ SizeToContent = sizeToContent;
+ }
- Width = clientSize.Width;
- Height = clientSize.Height;
+ Width = clientSize.Width;
+ Height = clientSize.Height;
+ }
base.HandleResized(clientSize, reason);
}
diff --git a/src/Avalonia.Controls/WindowBase.cs b/src/Avalonia.Controls/WindowBase.cs
index 12ba143c8a..d5e54a5c08 100644
--- a/src/Avalonia.Controls/WindowBase.cs
+++ b/src/Avalonia.Controls/WindowBase.cs
@@ -217,10 +217,16 @@ namespace Avalonia.Controls
/// The reason for the resize.
protected override void HandleResized(Size clientSize, PlatformResizeReason reason)
{
- ClientSize = clientSize;
FrameSize = PlatformImpl?.FrameSize;
- LayoutManager.ExecuteLayoutPass();
- Renderer?.Resized(clientSize);
+
+ if (ClientSize != clientSize)
+ {
+ ClientSize = clientSize;
+ LayoutManager.ExecuteLayoutPass();
+ Renderer?.Resized(clientSize);
+ }
+
+ System.Diagnostics.Debug.WriteLine($"HandleResized: ClientSize {ClientSize} | FrameSize {FrameSize}");
}
///