|
|
|
@ -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.SortChildren(scene); |
|
|
|
moveToNode.SortChildren(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() |
|
|
|
{ |
|
|
|
|