|
|
@@ -475,6 +475,64 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ [Fact]
|
|
|
+ public void Should_Update_When_Control_Moved()
|
|
|
+ {
|
|
|
+ using (UnitTestApplication.Start(TestServices.MockPlatformRenderInterface))
|
|
|
+ {
|
|
|
+ Decorator moveFrom;
|
|
|
+ Decorator moveTo;
|
|
|
+ Canvas moveMe;
|
|
|
+ var tree = new TestRoot
|
|
|
+ {
|
|
|
+ Width = 100,
|
|
|
+ Height = 100,
|
|
|
+ Child = new StackPanel
|
|
|
+ {
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ (moveFrom = new Decorator
|
|
|
+ {
|
|
|
+ Child = moveMe = new Canvas(),
|
|
|
+ }),
|
|
|
+ (moveTo = new Decorator()),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ tree.Measure(Size.Infinity);
|
|
|
+ tree.Arrange(new Rect(tree.DesiredSize));
|
|
|
+
|
|
|
+ var scene = new Scene(tree);
|
|
|
+ var sceneBuilder = new SceneBuilder();
|
|
|
+ sceneBuilder.UpdateAll(scene);
|
|
|
+
|
|
|
+ var moveFromNode = (VisualNode)scene.FindNode(moveFrom);
|
|
|
+ var moveToNode = (VisualNode)scene.FindNode(moveTo);
|
|
|
+
|
|
|
+ Assert.Equal(1, moveFromNode.Children.Count);
|
|
|
+ Assert.Same(moveMe, moveFromNode.Children[0].Visual);
|
|
|
+ Assert.Empty(moveToNode.Children);
|
|
|
+
|
|
|
+ moveFrom.Child = null;
|
|
|
+ moveTo.Child = moveMe;
|
|
|
+
|
|
|
+ scene = scene.CloneScene();
|
|
|
+ moveFromNode = (VisualNode)scene.FindNode(moveFrom);
|
|
|
+ moveToNode = (VisualNode)scene.FindNode(moveTo);
|
|
|
+
|
|
|
+ moveFromNode.UpdateChildren(scene);
|
|
|
+ moveToNode.UpdateChildren(scene);
|
|
|
+ sceneBuilder.Update(scene, moveFrom);
|
|
|
+ sceneBuilder.Update(scene, moveTo);
|
|
|
+ sceneBuilder.Update(scene, moveMe);
|
|
|
+
|
|
|
+ Assert.Empty(moveFromNode.Children);
|
|
|
+ Assert.Equal(1, moveToNode.Children.Count);
|
|
|
+ Assert.Same(moveMe, moveToNode.Children[0].Visual);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
[Fact]
|
|
|
public void Should_Update_When_Control_Made_Invisible()
|
|
|
{
|