Skip to content

Commit b5ae627

Browse files
committed
fix crash
1 parent f800ae9 commit b5ae627

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

Microsoft.Toolkit.Uwp.UI.Controls/WrapPanel/WrapPanel.cs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ protected override Size MeasureOverride(Size availableSize)
150150
/// <inheritdoc />
151151
protected override Size ArrangeOverride(Size finalSize)
152152
{
153-
if (finalSize != DesiredSize)
153+
if ((Orientation == Orientation.Horizontal && finalSize.Width < DesiredSize.Width) ||
154+
(Orientation == Orientation.Vertical && finalSize.Height < DesiredSize.Height))
154155
{
155156
// We haven't received our desired size. We need to refresh the rows.
156157
UpdateRows(finalSize);
@@ -180,18 +181,21 @@ protected override Size ArrangeOverride(Size finalSize)
180181
return finalSize;
181182
}
182183

183-
private Size UpdateRows(Size finalSize)
184+
private Size UpdateRows(Size availableSize)
184185
{
185186
_rows.Clear();
187+
188+
var paddingStart = new UvMeasure(Orientation, Padding.Left, Padding.Top);
189+
var paddingEnd = new UvMeasure(Orientation, Padding.Right, Padding.Bottom);
190+
186191
if (Children.Count == 0)
187192
{
188-
return Size.Empty;
193+
var emptySize = paddingStart.Add(paddingEnd).ToSize(Orientation);
194+
return emptySize;
189195
}
190196

191-
var parentMeasure = new UvMeasure(Orientation, finalSize.Width, finalSize.Height);
197+
var parentMeasure = new UvMeasure(Orientation, availableSize.Width, availableSize.Height);
192198
var spacingMeasure = new UvMeasure(Orientation, HorizontalSpacing, VerticalSpacing);
193-
var paddingStart = new UvMeasure(Orientation, Padding.Left, Padding.Top);
194-
var paddingEnd = new UvMeasure(Orientation, Padding.Right, Padding.Bottom);
195199
var position = new UvMeasure(Orientation, Padding.Left, Padding.Top);
196200

197201
var currentRow = new Row(new List<UvRect>(), default);
@@ -241,7 +245,8 @@ void Arrange(UIElement child, bool isLast = false)
241245

242246
if (_rows.Count == 0)
243247
{
244-
return Size.Empty;
248+
var emptySize = paddingStart.Add(paddingEnd).ToSize(Orientation);
249+
return emptySize;
245250
}
246251

247252
// Get max V here before computing final rect

0 commit comments

Comments
 (0)