|
@@ -83,6 +83,19 @@ namespace Avalonia.Controls
|
|
|
/// <summary>
|
|
|
/// Occurs when the window is resized.
|
|
|
/// </summary>
|
|
|
+ /// <remarks>
|
|
|
+ /// Although this event is similar to the <see cref="Control.SizeChanged"/> event, they are
|
|
|
+ /// conceptually different:
|
|
|
+ ///
|
|
|
+ /// - <see cref="Resized"/> is a window-level event, fired when a resize notification arrives
|
|
|
+ /// from the platform windowing subsystem. The event args contain details of the source of
|
|
|
+ /// the resize event in the <see cref="WindowResizedEventArgs.Reason"/> property. This
|
|
|
+ /// event is raised before layout has been run on the window's content.
|
|
|
+ /// - <see cref="Control.SizeChanged"/> is a layout-level event, fired when a layout pass
|
|
|
+ /// completes on a control. <see cref="Control.SizeChanged"/> is present on all controls
|
|
|
+ /// and is fired when the control's size changes for any reason, including a
|
|
|
+ /// <see cref="Resized"/> event in the case of a Window.
|
|
|
+ /// </remarks>
|
|
|
public event EventHandler<WindowResizedEventArgs>? Resized;
|
|
|
|
|
|
public new IWindowBaseImpl? PlatformImpl => (IWindowBaseImpl?) base.PlatformImpl;
|
|
@@ -237,14 +250,16 @@ namespace Avalonia.Controls
|
|
|
{
|
|
|
FrameSize = PlatformImpl?.FrameSize;
|
|
|
|
|
|
- if (ClientSize != clientSize)
|
|
|
+ var clientSizeChanged = ClientSize != clientSize;
|
|
|
+
|
|
|
+ ClientSize = clientSize;
|
|
|
+ OnResized(new WindowResizedEventArgs(clientSize, reason));
|
|
|
+
|
|
|
+ if (clientSizeChanged)
|
|
|
{
|
|
|
- ClientSize = clientSize;
|
|
|
LayoutManager.ExecuteLayoutPass();
|
|
|
Renderer.Resized(clientSize);
|
|
|
}
|
|
|
-
|
|
|
- OnResized(new WindowResizedEventArgs(clientSize, reason));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|