csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
50 lines
1.5 KiB
using System;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Layout;
|
|
|
|
namespace Avalonia.Base.UnitTests.Layout
|
|
{
|
|
internal class LayoutTestControl : Decorator
|
|
{
|
|
public bool Measured { get; set; }
|
|
public bool Arranged { get; set; }
|
|
public Func<Layoutable, Size, Size>? DoMeasureOverride { get; set; }
|
|
public Func<Layoutable, Size, Size>? DoArrangeOverride { get; set; }
|
|
public bool CallBaseMeasure { get; set; }
|
|
public bool CallBaseArrange { get; set; }
|
|
|
|
protected override Size MeasureOverride(Size availableSize)
|
|
{
|
|
Measured = true;
|
|
|
|
if (DoMeasureOverride is not null)
|
|
{
|
|
var overrideResult = DoMeasureOverride(this, availableSize);
|
|
return CallBaseMeasure ?
|
|
base.MeasureOverride(overrideResult) :
|
|
overrideResult;
|
|
}
|
|
else
|
|
{
|
|
return base.MeasureOverride(availableSize);
|
|
}
|
|
}
|
|
|
|
protected override Size ArrangeOverride(Size finalSize)
|
|
{
|
|
Arranged = true;
|
|
|
|
if (DoArrangeOverride is not null)
|
|
{
|
|
var overrideResult = DoArrangeOverride(this, finalSize);
|
|
return CallBaseArrange ?
|
|
base.ArrangeOverride(overrideResult) :
|
|
overrideResult;
|
|
}
|
|
else
|
|
{
|
|
return base.ArrangeOverride(finalSize);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|