|
|
|
@ -995,8 +995,13 @@ namespace Avalonia.Controls |
|
|
|
{ |
|
|
|
var sizeToContent = SizeToContent; |
|
|
|
var clientSize = ClientSize; |
|
|
|
var constraint = clientSize; |
|
|
|
var maxAutoSize = PlatformImpl?.MaxAutoSizeHint ?? Size.Infinity; |
|
|
|
var useAutoWidth = sizeToContent.HasAllFlags(SizeToContent.Width); |
|
|
|
var useAutoHeight = sizeToContent.HasAllFlags(SizeToContent.Height); |
|
|
|
|
|
|
|
var constraint = new Size( |
|
|
|
useAutoWidth || double.IsInfinity(availableSize.Width) ? clientSize.Width : availableSize.Width, |
|
|
|
useAutoHeight || double.IsInfinity(availableSize.Height) ? clientSize.Height : availableSize.Height); |
|
|
|
|
|
|
|
if (MaxWidth > 0 && MaxWidth < maxAutoSize.Width) |
|
|
|
{ |
|
|
|
@ -1007,19 +1012,19 @@ namespace Avalonia.Controls |
|
|
|
maxAutoSize = maxAutoSize.WithHeight(MaxHeight); |
|
|
|
} |
|
|
|
|
|
|
|
if (sizeToContent.HasAllFlags(SizeToContent.Width)) |
|
|
|
if (useAutoWidth) |
|
|
|
{ |
|
|
|
constraint = constraint.WithWidth(maxAutoSize.Width); |
|
|
|
} |
|
|
|
|
|
|
|
if (sizeToContent.HasAllFlags(SizeToContent.Height)) |
|
|
|
if (useAutoHeight) |
|
|
|
{ |
|
|
|
constraint = constraint.WithHeight(maxAutoSize.Height); |
|
|
|
} |
|
|
|
|
|
|
|
var result = base.MeasureOverride(constraint); |
|
|
|
|
|
|
|
if (!sizeToContent.HasAllFlags(SizeToContent.Width)) |
|
|
|
if (!useAutoWidth) |
|
|
|
{ |
|
|
|
if (!double.IsInfinity(availableSize.Width)) |
|
|
|
{ |
|
|
|
@ -1031,7 +1036,7 @@ namespace Avalonia.Controls |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!sizeToContent.HasAllFlags(SizeToContent.Height)) |
|
|
|
if (!useAutoHeight) |
|
|
|
{ |
|
|
|
if (!double.IsInfinity(availableSize.Height)) |
|
|
|
{ |
|
|
|
|