Browse Source

Fix Window auto-sizing.

`Window` was acting like `SizeToContent="WidthAndHeight"` was set even when it wasn't. This fixes that.
pull/1364/head
Steven Kirk 8 years ago
parent
commit
70d75c0eb5
  1. 38
      src/Avalonia.Controls/Window.cs

38
src/Avalonia.Controls/Window.cs

@ -374,27 +374,31 @@ namespace Avalonia.Controls
{
var sizeToContent = SizeToContent;
var clientSize = ClientSize;
Size constraint;
Size constraint = clientSize;
switch (sizeToContent)
if ((sizeToContent & SizeToContent.Width) != 0)
{
case SizeToContent.Width:
constraint = new Size(double.PositiveInfinity, ClientSize.Height);
break;
case SizeToContent.Height:
constraint = new Size(ClientSize.Width, double.PositiveInfinity);
break;
case SizeToContent.WidthAndHeight:
constraint = Size.Infinity;
break;
case SizeToContent.Manual:
constraint = ClientSize;
break;
default:
throw new InvalidOperationException("Invalid value for SizeToContent.");
constraint = constraint.WithWidth(double.PositiveInfinity);
}
return base.MeasureOverride(constraint);
if ((sizeToContent & SizeToContent.Height) != 0)
{
constraint = constraint.WithHeight(double.PositiveInfinity);
}
var result = base.MeasureOverride(constraint);
if ((sizeToContent & SizeToContent.Width) == 0)
{
result = result.WithWidth(clientSize.Width);
}
if ((sizeToContent & SizeToContent.Height) == 0)
{
result = result.WithHeight(clientSize.Height);
}
return result;
}
protected override void HandleClosed()

Loading…
Cancel
Save