|
|
@@ -369,6 +369,81 @@ namespace Avalonia.Visuals.UnitTests.Rendering
|
|
|
|
|
|
}
|
|
|
|
|
|
+ [Fact]
|
|
|
+ public void Should_Update_VisualNodes_When_Child_Moved_To_New_Parent_And_New_Root()
|
|
|
+ {
|
|
|
+ var dispatcher = new ImmediateDispatcher();
|
|
|
+ var loop = new Mock<IRenderLoop>();
|
|
|
+
|
|
|
+ Decorator moveFrom;
|
|
|
+ Decorator moveTo;
|
|
|
+ Canvas moveMe;
|
|
|
+
|
|
|
+ var root = new TestRoot
|
|
|
+ {
|
|
|
+ Child = new StackPanel
|
|
|
+ {
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ (moveFrom = new Decorator
|
|
|
+ {
|
|
|
+ Child = moveMe = new Canvas(),
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var otherRoot = new TestRoot
|
|
|
+ {
|
|
|
+ Child = new StackPanel
|
|
|
+ {
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ (moveTo = new Decorator())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var sceneBuilder = new SceneBuilder();
|
|
|
+ var target = new DeferredRenderer(
|
|
|
+ root,
|
|
|
+ loop.Object,
|
|
|
+ sceneBuilder: sceneBuilder,
|
|
|
+ dispatcher: dispatcher);
|
|
|
+
|
|
|
+ var otherSceneBuilder = new SceneBuilder();
|
|
|
+ var otherTarget = new DeferredRenderer(
|
|
|
+ otherRoot,
|
|
|
+ loop.Object,
|
|
|
+ sceneBuilder: otherSceneBuilder,
|
|
|
+ dispatcher: dispatcher);
|
|
|
+
|
|
|
+ root.Renderer = target;
|
|
|
+ otherRoot.Renderer = otherTarget;
|
|
|
+
|
|
|
+ target.Start();
|
|
|
+ otherTarget.Start();
|
|
|
+
|
|
|
+ RunFrame(target);
|
|
|
+ RunFrame(otherTarget);
|
|
|
+
|
|
|
+ moveFrom.Child = null;
|
|
|
+ moveTo.Child = moveMe;
|
|
|
+
|
|
|
+ RunFrame(target);
|
|
|
+ RunFrame(otherTarget);
|
|
|
+
|
|
|
+ var scene = target.UnitTestScene();
|
|
|
+ var otherScene = otherTarget.UnitTestScene();
|
|
|
+
|
|
|
+ var moveFromNode = (VisualNode)scene.FindNode(moveFrom);
|
|
|
+ var moveToNode = (VisualNode)otherScene.FindNode(moveTo);
|
|
|
+
|
|
|
+ Assert.Empty(moveFromNode.Children);
|
|
|
+ Assert.Equal(1, moveToNode.Children.Count);
|
|
|
+ Assert.Same(moveMe, moveToNode.Children[0].Visual);
|
|
|
+ }
|
|
|
+
|
|
|
[Fact]
|
|
|
public void Should_Push_Opacity_For_Controls_With_Less_Than_1_Opacity()
|
|
|
{
|