From 117450dbbe625cab8dad96bf7a336a122bcaf339 Mon Sep 17 00:00:00 2001 From: Poker Date: Fri, 21 Feb 2025 03:38:05 +0800 Subject: [PATCH] Fix DockPanel index out of range (#18261) * Update DockPanel.cs * Update DockPanelTests.cs --- src/Avalonia.Controls/DockPanel.cs | 4 ++-- .../Avalonia.Controls.UnitTests/DockPanelTests.cs | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/DockPanel.cs b/src/Avalonia.Controls/DockPanel.cs index 2bd90a980f..8850ecc9c7 100644 --- a/src/Avalonia.Controls/DockPanel.cs +++ b/src/Avalonia.Controls/DockPanel.cs @@ -179,7 +179,7 @@ namespace Avalonia.Controls } } - if (LastChildFill) + if (LastChildFill && Children.Count > 0) { var child = Children[Children.Count - 1]; var childConstraint = new Size( @@ -265,7 +265,7 @@ namespace Avalonia.Controls } } - if (LastChildFill) + if (LastChildFill && Children.Count > 0) { var child = Children[Children.Count - 1]; child.Arrange(new Rect(currentBounds.X, currentBounds.Y, currentBounds.Width, currentBounds.Height)); diff --git a/tests/Avalonia.Controls.UnitTests/DockPanelTests.cs b/tests/Avalonia.Controls.UnitTests/DockPanelTests.cs index d00ef70cde..f88772af76 100644 --- a/tests/Avalonia.Controls.UnitTests/DockPanelTests.cs +++ b/tests/Avalonia.Controls.UnitTests/DockPanelTests.cs @@ -4,6 +4,21 @@ namespace Avalonia.Controls.UnitTests { public class DockPanelTests { + [Fact] + public void DockPanel_Without_Child() + { + var target = new DockPanel + { + Width = 10, + Height = 10 + }; + + target.Measure(Size.Infinity); + target.Arrange(new Rect(target.DesiredSize)); + + Assert.Equal(new Rect(0, 0, 10, 10), target.Bounds); + } + [Fact] public void Should_Dock_Controls_Horizontal_First() {