|
|
|
@ -14,7 +14,7 @@ namespace Avalonia.Base.UnitTests.Layout |
|
|
|
public class LayoutableTests_EffectiveViewportChanged |
|
|
|
{ |
|
|
|
[Fact] |
|
|
|
public async Task EffectiveViewportChanged_Not_Raised_When_Control_Added_To_Tree() |
|
|
|
public async Task EffectiveViewportChanged_Not_Raised_When_Control_Added_To_Tree_And_Layout_Pass_Has_Not_Run() |
|
|
|
{ |
|
|
|
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
|
|
|
|
await RunOnUIThread.Execute(async () => |
|
|
|
@ -34,6 +34,60 @@ namespace Avalonia.Base.UnitTests.Layout |
|
|
|
Assert.Equal(0, raised); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task EffectiveViewportChanged_Raised_When_Control_Added_To_Tree_And_Layout_Pass_Has_Run() |
|
|
|
{ |
|
|
|
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
|
|
|
|
await RunOnUIThread.Execute(async () => |
|
|
|
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
|
|
|
|
{ |
|
|
|
var root = CreateRoot(); |
|
|
|
var target = new Canvas(); |
|
|
|
var raised = 0; |
|
|
|
|
|
|
|
target.EffectiveViewportChanged += (s, e) => |
|
|
|
{ |
|
|
|
++raised; |
|
|
|
}; |
|
|
|
|
|
|
|
root.Child = target; |
|
|
|
|
|
|
|
Assert.Equal(0, raised); |
|
|
|
|
|
|
|
await ExecuteInitialLayoutPass(root); |
|
|
|
|
|
|
|
Assert.Equal(1, raised); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task EffectiveViewportChanged_Raised_When_Root_LayedOut_And_Then_Control_Added_To_Tree_And_Layout_Pass_Runs() |
|
|
|
{ |
|
|
|
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
|
|
|
|
await RunOnUIThread.Execute(async () => |
|
|
|
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
|
|
|
|
{ |
|
|
|
var root = CreateRoot(); |
|
|
|
var target = new Canvas(); |
|
|
|
var raised = 0; |
|
|
|
|
|
|
|
target.EffectiveViewportChanged += (s, e) => |
|
|
|
{ |
|
|
|
++raised; |
|
|
|
}; |
|
|
|
|
|
|
|
await ExecuteInitialLayoutPass(root); |
|
|
|
|
|
|
|
root.Child = target; |
|
|
|
|
|
|
|
Assert.Equal(0, raised); |
|
|
|
|
|
|
|
await ExecuteInitialLayoutPass(root); |
|
|
|
|
|
|
|
Assert.Equal(1, raised); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task EffectiveViewportChanged_Raised_Before_LayoutUpdated() |
|
|
|
@ -268,8 +322,11 @@ namespace Avalonia.Base.UnitTests.Layout |
|
|
|
|
|
|
|
root.Child = parent; |
|
|
|
|
|
|
|
await ExecuteInitialLayoutPass(root); |
|
|
|
target.EffectiveViewportChanged += (s, e) => ++raised; |
|
|
|
await ExecuteInitialLayoutPass(root); |
|
|
|
|
|
|
|
raised = 0; // The initial layout pass is expected to raise.
|
|
|
|
|
|
|
|
target.RenderTransform = new TranslateTransform { X = 8 }; |
|
|
|
target.InvalidateMeasure(); |
|
|
|
await ExecuteLayoutPass(root); |
|
|
|
|