|
|
|
@ -10,21 +10,41 @@ namespace Avalonia.Base.UnitTests.Layout |
|
|
|
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; |
|
|
|
return DoMeasureOverride != null ? |
|
|
|
DoMeasureOverride(this, availableSize) : |
|
|
|
base.MeasureOverride(availableSize); |
|
|
|
|
|
|
|
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; |
|
|
|
return DoArrangeOverride != null ? |
|
|
|
DoArrangeOverride(this, finalSize) : |
|
|
|
base.ArrangeOverride(finalSize); |
|
|
|
|
|
|
|
if (DoArrangeOverride is not null) |
|
|
|
{ |
|
|
|
var overrideResult = DoArrangeOverride(this, finalSize); |
|
|
|
return CallBaseArrange ? |
|
|
|
base.ArrangeOverride(overrideResult) : |
|
|
|
overrideResult; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
return base.ArrangeOverride(finalSize); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|