From 0f81420ee2615432f4066a06a61bc5f1b13114d0 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 15 Jun 2017 01:26:39 +0200 Subject: [PATCH] Don't remove root layer when hiding root. --- .../Rendering/SceneGraph/SceneBuilder.cs | 2 +- .../SceneGraph/SceneBuilderTests_Layers.cs | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs b/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs index e54648fe8d..720993b31a 100644 --- a/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs +++ b/src/Avalonia.Visuals/Rendering/SceneGraph/SceneBuilder.cs @@ -274,7 +274,7 @@ namespace Avalonia.Rendering.SceneGraph } } - if (node.LayerRoot == node.Visual) + if (node.LayerRoot == node.Visual && node.Visual != scene.Root.Visual) { scene.Layers.Remove(node.LayerRoot); } diff --git a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests_Layers.cs b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests_Layers.cs index e65487ac44..13f28018db 100644 --- a/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests_Layers.cs +++ b/tests/Avalonia.Visuals.UnitTests/Rendering/SceneGraph/SceneBuilderTests_Layers.cs @@ -273,5 +273,32 @@ namespace Avalonia.Visuals.UnitTests.Rendering.SceneGraph ((MockStreamGeometryImpl)borderLayer.GeometryClip).Transform); } } + + [Fact] + public void Hiding_Root_Should_Not_Remove_Root_Layer() + { + using (TestApplication()) + { + Border border; + var tree = new TestRoot + { + Child = border = new Border() + }; + + var layout = AvaloniaLocator.Current.GetService(); + layout.ExecuteInitialLayoutPass(tree); + + var scene = new Scene(tree); + var sceneBuilder = new SceneBuilder(); + sceneBuilder.UpdateAll(scene); + + tree.IsVisible = false; + + scene = scene.Clone(); + sceneBuilder.Update(scene, tree); + + Assert.Equal(1, scene.Layers.Count); + } + } } }