|
|
|
@ -547,5 +547,38 @@ namespace Avalonia.Base.UnitTests.Layout |
|
|
|
Assert.True(root.IsMeasureValid); |
|
|
|
Assert.True(root.IsArrangeValid); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void GreatGrandparent_Can_Invalidate_Grandparent_Measure_During_Arrange() |
|
|
|
{ |
|
|
|
// Issue #7706 (second part: scrollbar gets stuck)
|
|
|
|
var child = new LayoutTestControl(); |
|
|
|
var parent = new LayoutTestControl { Child = child }; |
|
|
|
var grandparent = new LayoutTestControl { Child = parent }; |
|
|
|
var greatGrandparent = new LayoutTestControl { Child = grandparent }; |
|
|
|
var root = new LayoutTestRoot { Child = greatGrandparent }; |
|
|
|
|
|
|
|
root.LayoutManager.ExecuteInitialLayoutPass(); |
|
|
|
|
|
|
|
greatGrandparent.DoArrangeOverride = (_, s) => |
|
|
|
{ |
|
|
|
grandparent.InvalidateMeasure(); |
|
|
|
return s; |
|
|
|
}; |
|
|
|
|
|
|
|
child.InvalidateArrange(); |
|
|
|
greatGrandparent.InvalidateArrange(); |
|
|
|
|
|
|
|
root.LayoutManager.ExecuteLayoutPass(); |
|
|
|
|
|
|
|
Assert.True(child.IsMeasureValid); |
|
|
|
Assert.True(child.IsArrangeValid); |
|
|
|
Assert.True(parent.IsMeasureValid); |
|
|
|
Assert.True(parent.IsArrangeValid); |
|
|
|
Assert.True(greatGrandparent.IsMeasureValid); |
|
|
|
Assert.True(greatGrandparent.IsArrangeValid); |
|
|
|
Assert.True(root.IsMeasureValid); |
|
|
|
Assert.True(root.IsArrangeValid); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|