|
|
|
@ -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() |
|
|
|
{ |
|
|
|
|