Browse Source

Merge branch 'master' into refcount-scene

pull/1365/head
Steven Kirk 9 years ago
committed by GitHub
parent
commit
433939726e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 47
      src/Avalonia.Controls/Window.cs
  2. 1
      src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs

47
src/Avalonia.Controls/Window.cs

@ -19,27 +19,28 @@ namespace Avalonia.Controls
/// <summary> /// <summary>
/// Determines how a <see cref="Window"/> will size itself to fit its content. /// Determines how a <see cref="Window"/> will size itself to fit its content.
/// </summary> /// </summary>
[Flags]
public enum SizeToContent public enum SizeToContent
{ {
/// <summary> /// <summary>
/// The window will not automatically size itself to fit its content. /// The window will not automatically size itself to fit its content.
/// </summary> /// </summary>
Manual, Manual = 0,
/// <summary> /// <summary>
/// The window will size itself horizontally to fit its content. /// The window will size itself horizontally to fit its content.
/// </summary> /// </summary>
Width, Width = 1,
/// <summary> /// <summary>
/// The window will size itself vertically to fit its content. /// The window will size itself vertically to fit its content.
/// </summary> /// </summary>
Height, Height = 2,
/// <summary> /// <summary>
/// The window will size itself horizontally and vertically to fit its content. /// The window will size itself horizontally and vertically to fit its content.
/// </summary> /// </summary>
WidthAndHeight, WidthAndHeight = 3,
} }
/// <summary> /// <summary>
@ -374,27 +375,31 @@ namespace Avalonia.Controls
{ {
var sizeToContent = SizeToContent; var sizeToContent = SizeToContent;
var clientSize = ClientSize; var clientSize = ClientSize;
Size constraint; Size constraint = clientSize;
switch (sizeToContent) if ((sizeToContent & SizeToContent.Width) != 0)
{ {
case SizeToContent.Width: constraint = constraint.WithWidth(double.PositiveInfinity);
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.");
} }
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() protected override void HandleClosed()

1
src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs

@ -140,6 +140,7 @@ namespace Avalonia.DesignerSupport.Remote
BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
if (builderMethod == null) if (builderMethod == null)
throw Die($"{entryPoint.DeclaringType.FullName} doesn't have a method named {BuilderMethodName}"); throw Die($"{entryPoint.DeclaringType.FullName} doesn't have a method named {BuilderMethodName}");
Design.IsDesignMode = true;
Log($"Obtaining AppBuilder instance from {builderMethod.DeclaringType.FullName}.{builderMethod.Name}"); Log($"Obtaining AppBuilder instance from {builderMethod.DeclaringType.FullName}.{builderMethod.Name}");
var appBuilder = builderMethod.Invoke(null, null); var appBuilder = builderMethod.Invoke(null, null);
Log($"Initializing application in design mode"); Log($"Initializing application in design mode");

Loading…
Cancel
Save